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



(custom-declare-group 'opascal nil "Major mode for editing OPascal source in Emacs." :version "24.4" :group 'languages)
#@27 Non-nil if in debug mode.
(defconst opascal-debug nil (#$ . 204))
(byte-code "\300\301\302\303#\210\304\211\203( \211@\301N\203! \302N\204! \305\302\301N#\210A\266\202\202 \210\306\301\302\307#\210\310\302\311\312\313DD\314\315\316%\210\300\317\320\303#\210\304\211\203c \211@\317N\203\\ \320N\204\\ \305\320\317N#\210A\266\202\202B \210\306\317\320\307#\210\310\320\311\312\321DD\322\315\323%\210\300\324\325\303#\210\304\211\203\236 \211@\324N\203\227 \325N\204\227 \305\325\324N#\210A\266\202\202} \210\306\324\325\307#\210\310\325\311\312\326DD\327\315\323%\210\300\330\331\303#\210\304\211\203\331 \211@\330N\203\322 \331N\204\322 \305\331\330N#\210A\266\202\202\270 \210\306\330\331\307#\210\310\331\311\312\332DD\333\315\323%\210\300\334\335\303#\210\304\211\203\211@\334N\203\335N\204\305\335\334N#\210A\266\202\202\363 \210\306\334\335\307#\210\310\335\311\312\336DD\337\315\340%\210\300\341\342\303#\210\304\211\203O\211@\341N\203H\342N\204H\305\342\341N#\210A\266\202\202.\210\306\341\342\307#\210\310\342\311\312\343DD\344\315\340%\210\306\342\345\307#\207" [defvaralias delphi-search-path opascal-search-path nil (saved-value saved-variable-comment) put make-obsolete-variable "24.4" custom-declare-variable funcall function #[0 "\300\207" ["."] 1 #1=""] "Directories to search when finding external units.\nIt is a list of directory strings.  If only a single directory,\nit can be a single string instead of a list.  If a directory\nends in \"...\" then that directory is recursively searched." :type string delphi-indent-level opascal-indent-level #[0 "\300\207" [3] 1 #1#] "Indentation of OPascal statements with respect to containing block.\nE.g.\n\nbegin\n   // This is an indent of 3.\nend;" integer delphi-compound-block-indent opascal-compound-block-indent #[0 "\300\207" [0] 1 #1#] "Extra indentation for blocks in compound statements.  E.g.\n\n// block indent = 0     vs      // block indent = 2\nif b then                       if b then\nbegin                             begin\nend else begin                    end\nend;                            else\n                                  begin\n                                  end;" delphi-case-label-indent opascal-case-label-indent #[0 "\207" [opascal-indent-level] 1 #1#] "Extra indentation for case statement labels.  E.g.\n\n// case indent = 0      vs      // case indent = 3\ncase value of                   case value of\nv1: process_v1;                    v1: process_v1;\nv2: process_v2;                    v2: process_v2;\nelse                            else\n   process_else;                   process_else;\nend;                            end;" delphi-verbose opascal-verbose #[0 "\300\207" [t] 1 #1#] "If true then OPascal token processing progress is reported to the user." boolean delphi-tab-always-indents opascal-tab-always-indents #[0 "\207" [tab-always-indent] 1 #1#] "Non-nil means `opascal-tab' should always reindent the current line.\nThat is, regardless of where in the line point is at the time." "use `indent-for-tab-command' and `tab-always-indent'."] 7)
#@22 OPascal4 directives.
(defconst opascal-directives '(absolute abstract assembler automated cdecl default dispid dynamic export external far forward index inline message name near nodefault overload override pascal private protected public published read readonly register reintroduce resident resourcestring safecall stdcall stored virtual write writeonly) (#$ . 3317))
#@20 OPascal4 keywords.
(defconst opascal-keywords (append '(and array as asm at begin case class const constructor contains destructor dispinterface div do downto else end except exports file finalization finally for function goto if implementation implements in inherited initialization interface is label library mod nil not of object on or out package packed procedure program property raise record repeat requires result self set shl shr then threadvar to try type unit uses until var while with xor break exit) opascal-directives) (#$ . 3692))
#@69 Expression/statement terminators that denote a previous expression.
(defconst opascal-previous-terminators '(semicolon comma) (#$ . 4243))
#@33 Tokens that represent comments.
(defconst opascal-comments '(comment-single-line comment-multi-line-1 comment-multi-line-2) (#$ . 4388))
#@40 Tokens that are considered whitespace.
(defconst opascal-whitespace (byte-code "\301\302BB\207" [opascal-comments space newline] 3) (#$ . 4531))
#@66 Marks the start of a routine, or routine-ish looking expression.
(defconst opascal-routine-statements '(procedure function constructor destructor property) (#$ . 4683))
#@109 Statements that have either a single statement or a block as a body and also
are followed by an expression.
(defconst opascal-body-expr-statements '(if while for on) (#$ . 4859))
#@64 Expression statements contain expressions after their keyword.
(defconst opascal-expr-statements (cons 'case opascal-body-expr-statements) (#$ . 5044))
#@70 Statements that have either a single statement or a block as a body.
(defconst opascal-body-statements (cons 'else opascal-body-expr-statements) (#$ . 5202))
#@30 Expression delimiter tokens.
(defconst opascal-expr-delimiters '(then do of) (#$ . 5366))
#@28 OPascal binary operations.
(defconst opascal-binary-ops '(plus minus equals not-equals times divides div mod and or xor) (#$ . 5462))
#@21 Class visibilities.
(defconst opascal-visibilities '(public private protected published automated) (#$ . 5602))
#@49 Statements that contain multiple substatements.
(defconst opascal-block-statements '(begin try case repeat initialization finalization asm) (#$ . 5720))
#@59 Statements that mark mid sections of the enclosing block.
(defconst opascal-mid-block-statements (byte-code "\301\302BB\207" [opascal-visibilities except finally] 3) (#$ . 5879))
#@37 Statements that end block sections.
(defconst opascal-end-block-statements '(end until) (#$ . 6065))
#@60 Statements that match the indentation of the parent block.
(defconst opascal-match-block-statements (append opascal-end-block-statements opascal-mid-block-statements) (#$ . 6172))
#@45 Denotes the start of a declaration section.
(defconst opascal-decl-sections '(type const var label resourcestring) (#$ . 6358))
#@18 Interface types.
(defconst opascal-interface-types '(dispinterface interface) (#$ . 6492))
#@14 Class types.
(defconst opascal-class-types '(class object) (#$ . 6589))
#@46 Types that contain declarations within them.
(defconst opascal-composite-types (append opascal-class-types opascal-interface-types '(record)) (#$ . 6667))
#@45 Unit sections within which the indent is 0.
(defconst opascal-unit-sections '(interface implementation program library package) (#$ . 6828))
#@43 Statements that refer to foreign symbols.
(defconst opascal-use-clauses '(uses requires exports contains) (#$ . 6975))
#@33 Statements indented at level 0.
(defconst opascal-unit-statements (append opascal-use-clauses opascal-unit-sections '(initialization finalization)) (#$ . 7100))
#@60 Statements that a declaration statement should align with.
(defconst opascal-decl-delimiters (append opascal-decl-sections opascal-unit-statements opascal-routine-statements) (#$ . 7267))
#@68 Statements that should match to declaration statement indentation.
(defconst opascal-decl-matchers (cons 'begin opascal-decl-sections) (#$ . 7461))
#@34 Delimits an enclosing statement.
(defconst opascal-enclosing-statements (append opascal-block-statements opascal-mid-block-statements opascal-decl-sections opascal-use-clauses opascal-routine-statements) (#$ . 7615))
#@32 Delimits a previous statement.
(defconst opascal-previous-statements (append opascal-unit-statements opascal-routine-statements) (#$ . 7838))
#@42 Delimits a previous enclosing statement.
(defconst opascal-previous-enclosing-statements (append opascal-block-statements opascal-mid-block-statements opascal-decl-sections) (#$ . 7986))
#@41 Tokens that a begin token indents from.
(defconst opascal-begin-enclosing-tokens (append opascal-block-statements opascal-mid-block-statements) (#$ . 8179))
#@82 Tokens that a begin token aligns with, but only if not part of a nested routine.
(defconst opascal-begin-previous-tokens (append opascal-decl-sections opascal-routine-statements) (#$ . 8342))
(defconst opascal-space-chars " -	- ")
(defconst opascal-non-space-chars (concat "^" opascal-space-chars))
(defconst opascal-spaces-re (concat "[" opascal-space-chars "]*"))
(defconst opascal-leading-spaces-re (concat "^" opascal-spaces-re))
(defconst opascal-word-chars "a-zA-Z0-9_")
(defvar opascal-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\305#\210\301\306\305#\210\301\307\310#\210\301\311\312#\210\301\313\314#\210\301\315\316#\210\301\317\320#\210\301\321\322#\210\301\323\324#\210\207" [make-syntax-table modify-syntax-entry 92 "." 34 "\"" 39 123 "<" 125 ">" 40 "()1" 41 ")(4" 42 ". 23b" 47 ". 12c" 10 "> c"] 5))
#@20 

(fn &rest FORMS)
(defalias 'opascal-save-excursion '(macro . #[128 "\300\301\302\303\304BEDD\207" [save-excursion save-match-data let ((inhibit-point-motion-hooks t) (deactivate-mark nil)) progn] 7 (#$ . 9190)]))
(put 'opascal-save-excursion 'edebug-form-spec t)
#@18 

(fn START END)
(defalias 'opascal-string-of #[514 "\300\"\207" [buffer-substring-no-properties] 5 (#$ . 9462)])
#@12 

(fn P S)
(defalias 'opascal-looking-at-string #[514 "G\\\211dX\205 \300\"\230\207" [opascal-string-of] 7 (#$ . 9584)])
#@23 

(fn KIND START END)
(defalias 'opascal-token-of #[771 "\300#\207" [vector] 7 (#$ . 9717)])
#@14 

(fn TOKEN)
(defalias 'opascal-token-kind #[257 "\211\205 \211\300H\207" [0] 3 (#$ . 9819)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put opascal-token-kind speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@22 

(fn TOKEN TO-KIND)
(defalias 'opascal-set-token-kind #[514 "\205 \300I\207" [0] 5 (#$ . 10064)])
#@14 

(fn TOKEN)
(defalias 'opascal-token-start #[257 "\211\203 \211\300H\207e\207" [1] 3 (#$ . 10173)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put opascal-token-start speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@14 

(fn TOKEN)
(defalias 'opascal-token-end #[257 "\211\203 \211\300H\207e\207" [2] 3 (#$ . 10426)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put opascal-token-end speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@20 

(fn TOKEN START)
(defalias 'opascal-set-token-start #[514 "\205 \300I\207" [1] 5 (#$ . 10675)])
#@18 

(fn TOKEN END)
(defalias 'opascal-set-token-end #[514 "\205 \300I\207" [2] 5 (#$ . 10783)])
#@14 

(fn TOKEN)
(defalias 'opascal-token-string #[257 "\211\203' \300\211\203 \211\301H\262\202 e\262\211\203\" \211\302H\262\202% e\262\"\207\303\207" [opascal-string-of 1 2 ""] 6 (#$ . 10887)])
#@16 

(fn P TOKEN)
(defalias 'opascal-in-token #[514 "\211\211\203 \211\300H\262\202 e\262X\205' \211\203# \211\301H\262\202& e\262W\207" [1 2] 6 (#$ . 11094)])
#@10 

(fn P)
(defalias 'opascal-column-of #[257 "\212\211b\210i)\207" [] 2 (#$ . 11266)])
#@48 The last point at which progress was reported.
(defvar opascal-progress-last-reported-point nil (#$ . 11358))
#@69 Number of chars to process before the next parsing progress report.
(defconst opascal-parsing-progress-step 16384 (#$ . 11474))
#@70 Number of chars to process before the next scanning progress report.
(defconst opascal-scanning-progress-step 2048 (#$ . 11608))
(defalias 'opascal-progress-start #[0 "\301\211\207" [opascal-progress-last-reported-point nil] 2])
#@19 

(fn &rest MSGS)
(defalias 'opascal-progress-done #[128 "\302	\205 \211\204 \303\304!\207\305\303\"\207" [opascal-progress-last-reported-point opascal-verbose nil message "" apply] 4 (#$ . 11844)])
#@25 

(fn P DESC STEP-SIZE)
(defalias 'opascal-step-progress #[771 "\204 \211\207	\205% \302Z!Y\205% \303\304\305 \306\307_d\"$\207" [opascal-progress-last-reported-point opascal-verbose abs message "%s %s ... %d%%" buffer-name floor 100.0] 10 (#$ . 12053)])
#@29 

(fn &optional FROM-POINT)
(defalias 'opascal-next-line-start #[256 "`\300\203	 b\210\300\210`Td^\262b\210\207" [nil] 5 (#$ . 12326)])
(defconst opascal--literal-start-re "\\(?:(\\*\\|//\\|[\"'{]\\)")
#@10 

(fn P)
(defalias 'opascal-literal-kind #[257 "eX\205k \211dX\205k \212\301!\3028\204> \303!\205h \304f\211\305\267\2028 \306\2029 \307\2029 \310\2029 \311\2029 \312\2029 \304\262\202h \3138\203T \3138\314=\203P \312\202h \311\202h \3158\211\316\267\202e \306\202f \310\202f \307\262\262)\207" [opascal--literal-start-re syntax-ppss 8 looking-at nil #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (47 36 123 40 40 44 39 48 34 52)) comment-single-line comment-multi-line-1 comment-multi-line-2 string double-quoted-string 3 34 7 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (2 93 1 97))] 5 (#$ . 12539)])
#@21 

(fn LITERAL-KIND)
(defalias 'opascal-literal-start-pattern #[257 "\300\301\"A\207" [assoc ((comment-single-line . "//") (comment-multi-line-1 . "{") (comment-multi-line-2 . "(*") (string . "'") (double-quoted-string . "\""))] 4 (#$ . 13238)])
#@21 

(fn LITERAL-KIND)
(defalias 'opascal-literal-stop-pattern #[257 "\300\301\"A\207" [assoc ((comment-single-line . "\n") (comment-multi-line-1 . "}") (comment-multi-line-2 . "\\*)") (string . "['\n]") (double-quoted-string . "[\"\n]"))] 4 (#$ . 13490)])
#@10 

(fn P)
(defalias 'opascal-is-literal-end #[257 "\212\300\301!8?\205 \300\301S!8)\207" [8 syntax-ppss] 4 (#$ . 13751)])
#@75 Return the literal token surrounding the point P, or nil if none.

(fn P)
(defalias 'opascal-literal-token-at #[257 "\212\301!\3028\204 \303!\205A \3028\206 \211b\210\30413 \305f\306>\203+ \307\310!\202. \311\310!0\210\2027 \210db\210`\312\313!#\266\202\262)\207" [opascal--literal-start-re syntax-ppss 8 looking-at (scan-error) nil (39 34) forward-sexp 1 forward-comment opascal-token-of opascal-literal-kind] 8 (#$ . 13881)])
#@15 

(fn P KIND)
(defalias 'opascal-point-token-at #[514 "\300\211T#\207" [opascal-token-of] 6 (#$ . 14326)])
#@20 

(fn P CHAR KIND)
(defalias 'opascal-char-token-at #[771 "f=\205 \300\211T#\207" [opascal-token-of] 7 (#$ . 14441)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put opascal-char-token-at speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@23 

(fn P CHARSET KIND)
(defalias 'opascal-charset-token-at #[771 "`\300\211b\210\300w\301V\203  `\262Tb\210\300x\210\302`#\262b\210\207" [nil 0 opascal-token-of] 10 (#$ . 14717)])
#@10 

(fn P)
(defalias 'opascal-space-token-at #[257 "\301\302#\207" [opascal-space-chars opascal-charset-token-at space] 5 (#$ . 14911)])
#@10 

(fn P)
(defalias 'opascal-word-token-at #[257 "\302\303#\211\205( \304!\227\305!\211\204 \306\230\203% \211	>\203% \307\"\210\266\202\207" [opascal-word-chars opascal-keywords opascal-charset-token-at word opascal-token-string intern-soft "nil" opascal-set-token-kind] 7 (#$ . 15054)])
#@28 

(fn P TOKEN-STRING KIND)
(defalias 'opascal-explicit-token-at #[771 "\300#\211\205 \301!\230\205 \211\207" [opascal-charset-token-at opascal-token-string] 7 (#$ . 15357)])
#@10 

(fn P)
(defalias 'opascal-token-at #[257 "eX\205T\211dX\205T\211\300\301f=\205 \302\211T#\266\203\206T\303!\206T\304!\206T\305!\206T\211\306\307f=\205C \302\211T#\266\203\206T\211\310\311f=\205X \302\211T#\266\203\206T\211\312\307f=\205m \302\211T#\266\203\206T\211\313\311f=\205\202 \302\211T#\266\203\206T\211\314\315f=\205\227 \302\211T#\266\203\206T\211\316\317f=\205\254 \302\211T#\266\203\206T\211\320\321f=\205\301 \302\211T#\266\203\206T\211\322\323f=\205\326 \302\211T#\266\203\206T\211\324\325f=\205\353 \302\211T#\266\203\206T\211\326\327f=\205 \302\211T#\266\203\206T\211\330\331f=\205\302\211T#\266\203\206T\211\332\333f=\205*\302\211T#\266\203\206T\211\334\335f=\205?\302\211T#\266\203\206T\336\337\340#\206T\341\342\"\206T\343\207" [10 newline opascal-token-of opascal-literal-token-at opascal-space-token-at opascal-word-token-at 40 open-group 41 close-group 91 93 59 semicolon 46 dot 44 comma 61 equals 43 plus 45 minus 42 times 47 divides 58 colon opascal-explicit-token-at "<>" not-equals opascal-point-token-at punctuation nil] 8 (#$ . 15544)])
(defalias 'opascal-current-token #[0 "\300`!\207" [opascal-token-at] 2])
#@14 

(fn TOKEN)
(defalias 'opascal-next-token #[257 "\211\2052 \301\211\203 \211\302H\262\202 e\262!\211\203/ \303\211\203( \211\304H\262\202+ e\262\305#\210\211\262\207" [opascal-scanning-progress-step opascal-token-at 2 opascal-step-progress 1 "Scanning"] 6 (#$ . 16779)])
#@14 

(fn TOKEN)
(defalias 'opascal-previous-token #[257 "\211\2053 \301\211\203 \211\302H\262\202 e\262S!\211\2030 \303\211\203) \211\302H\262\202, e\262\304#\210\211\262\207" [opascal-scanning-progress-step opascal-token-at 1 opascal-step-progress "Scanning"] 6 (#$ . 17067)])
#@14 

(fn TOKEN)
(defalias 'opascal-next-visible-token #[257 "\300\301!\262\211\211\205 \211\302H\262\303>\204 \207" [nil opascal-next-token 0 (space newline)] 5 (#$ . 17358)])
#@19 

(fn FROM-TOKEN)
(defalias 'opascal-group-start #[257 "\300!\301\30225 \2033 \211\205 \211\303H\262\262\211\304\267\202+ \305!\262\202+ \306\302\"\210\300!\262\202 \3010\207" [opascal-previous-token nil done 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (close-group 30 open-group 38)) opascal-group-start throw] 6 (#$ . 17542)])
#@19 

(fn FROM-TOKEN)
(defalias 'opascal-group-end #[257 "\300!\301\30225 \2033 \211\205 \211\303H\262\262\211\304\267\202+ \305!\262\202+ \306\302\"\210\300!\262\202 \3010\207" [opascal-next-token nil done 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (open-group 30 close-group 38)) opascal-group-end throw] 6 (#$ . 17932)])
#@31 

(fn TOKEN &optional OFFSET)
(defalias 'opascal-indent-of #[513 "\301\211\203 \211\302H\262\202 e\262!\203 \202 \303\\\203I \304\305\306!\301\211\2036 \211\302H\262\2029 e\262!\203E \202F \303&\210\207" [opascal-debug opascal-column-of 1 0 opascal-debug-log "\n Indent of: %S %S\n column: %d indent: %d offset: %d" opascal-token-string] 11 (#$ . 18314)])
#@40 

(fn TOKEN-VAR LAST-VAR &rest PCASES)
(defalias 'opascal--scan-non-whitespace-backward '(macro . #[642 "\300\211DC\301\302\303DE\304D\305!\203 \211\202 \306\307!\310\311\312BB\313\nBB\n\2056 \302EF=\203C \211\266\203\202L \314DC\"\266\203EE\207" [let while setq opascal-previous-token opascal-token-kind macroexp-const-p make-symbol "kind-var" unless memq (opascal-whitespace) pcase macroexp-let*] 15 (#$ . 18699)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put opascal--scan-non-whitespace-backward edebug-form-spec (symbolp symbolp &rest (pcase-PAT body)) function-put lisp-indent-function 2] 4)
#@54 

(fn FROM-TOKEN &optional OFFSET &rest TERMINATORS)
(defalias 'opascal-line-indent-of #[641 "\301!\302\3032L \205K \211\205 \211\304H\262\262\211\305\267\202/ \306!\262\202: \307\303\302\"\210\202: \211>\203: \307\303\302\"\210\211>\204C \262\301!\262\202	 0\210\310\"\207" [opascal-whitespace opascal-previous-token nil done 0 #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (close-group 31 newline 39 open-group 39)) opascal-group-start throw opascal-indent-of] 9 (#$ . 19347)])
#@36 

(fn FROM-TOKEN &optional OFFSET)
(defalias 'opascal-stmt-line-indent-of #[513 "\304!\305\3062h \205g \211\205 \211\307H\262\262\211\310=\2039 \211\205' \211\307H\262\311	\">\2039 \312\306\305\"\210\202V \211\313=\203G \314!\262\202V \211\315\316\nBB>\203V \312\306\305\"\210\211>\204_ \262\304!\262\202	 0\210\317\"\207" [opascal-block-statements opascal-expr-statements opascal-use-clauses opascal-whitespace opascal-previous-token nil done 0 colon append throw close-group opascal-group-start newline open-group opascal-indent-of] 9 (#$ . 19890)])
#@42 

(fn TOKEN LAST-TOKEN &optional OFFSET)
(defalias 'opascal-open-group-indent #[770 "\211\205 \211\301H\262\302=\205 \203 \303\"\207\304\"\207" [opascal-indent-level 0 open-group opascal-indent-of opascal-stmt-line-indent-of] 6 (#$ . 20467)])
#@25 

(fn TOKEN LAST-TOKEN)
(defalias 'opascal-composite-type-start #[514 "\211\205 \211\301H\262\302=\205 \211\211\205 \211\301H\262>\205 \211\207" [opascal-composite-types 0 equals] 5 (#$ . 20726)])
#@29 

(fn AT-TOKEN LIMIT-TOKEN)
(defalias 'opascal-is-simple-class-type #[514 "\211\205 \211\302H\262>\205| \3032| \304!\305\211\203$ \211\306H\262\202' e\262\205y \211\2038 \211\306H\262\202; e\262X\205y \211\205H \211\302H\262\262\307\267\202b \310\303\"\210\202q \311!\262\202q \312\313	BB>\204q \310\303\305\"\210\304!\262\202' \266\2030\207" [opascal-class-types opascal-whitespace 0 done opascal-next-token nil 1 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (semicolon 82 open-group 90)) throw opascal-group-end of word] 9 (#$ . 20937)])
#@43 

(fn FROM-TOKEN &optional STOP-ON-CLASS)
(defalias 'opascal-block-start #[513 "\303\3042\213 \305!\211\262\203\210 \211\211\205 \211\306H\262\211>\204\204 \211	>\203- \307!\262\202\201 \211\310=\203_ \311\304\307\312\"\211\211\205A \211\306H\262\313=\203W \203Q \211\202X \305!\202X \262\"\210\202\201 \211\n>\203m \311\304\"\210\202\201 \314\"\203\201 \311\304\203~ \202 \"\210\262\210\202 \210\3030\207" [opascal-whitespace opascal-end-block-statements opascal-block-statements nil done opascal-previous-token 0 opascal-block-start case throw stop-on-class record opascal-composite-type-start] 11 (#$ . 21546)])
#@18 

(fn FROM-ELSE)
(defalias 'opascal-else-start #[257 "\302\3032s \304!\211\262\203p \211\211\205 \211\302H\262\211>\204l \211\305=\203- \306!\266\202\202 \211	>\203; \307!\266\202\202 \211\310\267\202a T\262\210\202 \302U\203l \311\303\"\266\202 \311\303\"\266\202 \211	>\203l \307!\262\210\202 \210\3120\207" [opascal-whitespace opascal-end-block-statements 0 done opascal-previous-token close-group opascal-group-start opascal-block-start #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (semicolon 65 if 73 case 88)) throw nil] 7 (#$ . 22192)])
#@16 

(fn COMMENT)
(defalias 'opascal-comment-content-start #[257 "\211\211\205 \211\304H\262\211>\205< \212\305 \306\307\"\216\310\311\211\203) \211\312H\262\202, e\262\313!G\\b\210\311w\210`+\262)\207" [opascal-comments deactivate-mark inhibit-point-motion-hooks opascal-space-chars 0 match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] t nil 1 opascal-literal-start-pattern] 6 (#$ . 22805)])
#@16 

(fn COMMENT)
(defalias 'opascal-comment-block-start #[257 "\211\211\205 \211\300H\262\301=\204 \207\211\211\205 \211\300H\262\211\302=\2060 \211\301=\203/ \211\262\2020 \303\262\203= \304!\262\202 \207" [0 comment-single-line space nil opascal-previous-token] 6 (#$ . 23244)])
#@16 

(fn COMMENT)
(defalias 'opascal-comment-block-end #[257 "\211\211\205 \211\300H\262\301=\204 \207\211\211\205 \211\300H\262\211\302=\2060 \211\301=\203/ \211\262\2020 \303\262\203= \304!\262\202 \207" [0 comment-single-line space nil opascal-next-token] 6 (#$ . 23542)])
#@16 

(fn COMMENT)
(defalias 'opascal-on-first-comment-line #[257 "\212\211\211\203 \211\301H\262\202 e\262`\211b\210\302\210X\205# \211`X)\266\202)\207" [comment-start 1 nil] 6 (#$ . 23834)])
#@16 

(fn COMMENT)
(defalias 'opascal-comment-indent-of #[257 "\301!\211=\203 \302!\203 \303!\207\212\211\205 \211\304H\262\305 \210\211\306=\203- \307!\202B \310\311!P!\203= \307!\202B \312\313!!\262)\207" [opascal-leading-spaces-re opascal-comment-block-start opascal-on-first-comment-line opascal-enclosing-indent-of 0 beginning-of-line comment-single-line opascal-indent-of looking-at opascal-literal-stop-pattern opascal-column-of opascal-comment-content-start] 7 (#$ . 24038)])
#@49 

(fn AT-TOKEN LAST-TOKEN LAST-COLON FROM-KIND)
(defalias 'opascal-is-use-clause-end #[1028 "\205] ?\205] \211\205 \211\302H\262\303=\205] \211\304=\205] \3052] \306!\211\262\203Z \211\211\2054 \211\302H\262\211>\204V \211	>\203K \307\305\310\"\266\202# \211\311>\204V \307\305\312\"\210\210\202# \210\3120\207" [opascal-whitespace opascal-use-clauses 0 comma semicolon done opascal-previous-token throw t (double-quoted-string string in comma word) nil] 9 (#$ . 24539)])
#@14 

(fn TOKEN)
(defalias 'opascal-is-block-after-expr-statement #[257 "\211\211\205 \211\302H\262>\2058 \303!\304\211\205 \211\302H\262\262\211\305=\203- \303!\262\202 \211	>\2066 \211\306=\266\202\207" [opascal-block-statements opascal-expr-delimiters 0 opascal-previous-token nil space else] 6 (#$ . 25028)])
#@19 

(fn FROM-TOKEN)
(defalias 'opascal-previous-indent-of #[257 "\211\211\205 \211\306H\262\307C\307C\307C\3102yC\211\311\242!\240\203v\211\242\211\205( \211\306H\262\211>\204r\312\313\314\315\316\317\320\321\267\202[ \322\310\323\242\242\"\"\266\202m\324\n\242!\240\266\202m	>\203\213 \311	\242!\211\205n \211\306H\262\325=\203~ \322\310\306\"\266\202m\326\n\242!\240\266\202m\327	\242\242\242$\203\244 \322\310\306\"\266\202m	\242\203\345\n>\203Z	\242\211\205\273 \211\306H\262>\204\320 \322\310\330\f\242\306\"\"\266\202m\331\267\202\373 \n	\242\240\266\202m\f\f#\266\202m\f\n\"\266\202m\f>\203#\266\202m\332=\203	!\266\202m>\2031\n\n\"\266\202m\333	\242\242\"\203I#\266\202m>\203\340\211	!\266\202m\334\267\202\205\n	\242\240\266\202m\f\f#\266\202m\f\n\"\266\202m\f>\203\231#\266\202m\332=\203\251	!\266\202m>\203\273\n\n\"\266\202m\333	\242\242\"\203\323#\266\202m>\203k\211	!\210\266\202m\335\267\202\n	\242\240\266\202m\f\f#\266\202m\f\n\"\266\202m\f>\203$#\266\202m\332=\2034	!\266\202m>\203F\n\n\"\266\202m\333	\242\242\"\203^#\266\202m>\203k\211	!\210\266\242\240\210\210\202 \210\3060\207" [opascal-whitespace opascal-end-block-statements opascal-previous-terminators opascal-directives opascal-use-clauses opascal-previous-enclosing-statements 0 nil done opascal-previous-token #[771 "\242?\205\n \242\240\207" [] 5 "\n\n(fn LAST-COLON LAST-OF TOKEN)"] #[514 "\301\302\242\203 \303\242!\202 \303\242\"\"\207" [opascal-case-label-indent throw done opascal-line-indent-of] 7 "\n\n(fn LAST-COLON TOKEN)"] #[771 "\301\302\303=\203 \242\203 \304\242!\202  \305\242\"\202  \305\242!\"\207" [opascal-indent-level throw done comma opascal-indent-of opascal-line-indent-of] 8 "\n\n(fn FROM-KIND LAST-TOKEN TOKEN)"] #[257 "\301\302\303\242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 6 "\n\n(fn TOKEN)"] #[514 "\301\302\242\203 \303\242!\202 \303\242\"\"\207" [opascal-indent-level throw done opascal-line-indent-of] 7 "\n\n(fn LAST-TOKEN TOKEN)"] #[771 "\301\302\303\242\"\203 \304\242!\202 \304\242\"\"\207" [opascal-indent-level throw done opascal-is-simple-class-type opascal-line-indent-of] 8 "\n\n(fn FROM-TOKEN LAST-TOKEN TOKEN)"] #[257 "\300\301\302\242\303\"\"\207" [throw done opascal-stmt-line-indent-of 0] 6 "\n\n(fn TOKEN)"] #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (open-group 62 close-group 78)) throw opascal-open-group-indent opascal-group-start newline opascal-block-start opascal-is-use-clause-end opascal-stmt-line-indent-of #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (of 215 colon 226 case 240)) asm opascal-composite-type-start #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (of 353 colon 364 case 378)) #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (of 492 colon 503 case 517)) opascal-previous-statements] 19 (#$ . 25354)])
#@22 

(fn SECTION-TOKEN)
(defalias 'opascal-section-indent-of #[257 "\306\307\306\211\3102C\211\311\242!\240\203\211\242\211\205 \211\307H\262\211>\204\312\313\314\315\316\317\267\202K \320\310\321	\242\"\"\266\202\f\322\242!\240\266\202\f	>\203\200 \311\242!\211\205] \211\307H\262\323=\203m \320\310\307\"\266\202\f\324\242!\240\210	T\262\n\266\202\f\325=\203\220 	T\262\n\266\202\f\n>\203Z	\307V\203\247 	S\262\n\266\202\f\326=\203\267 \242\262\266\202\f>\203\307 \242\262	\266\202\f\204\232\f>\203\333 !\266\202\f\327=\203W\211\205\352 \211\307H\262>\203\204\204\n\211\205\211\307H\262\330=\204!\266\202\f>\203$!\266\202\f>\203I	\307U\203;!\266\202\f>\203U\211 \266\202\f>\203\n\211 \266\202\f>\203g!\266\202\f>\203\214	\307U\203~!\266\202\f>\203\n\211 \266\202\f>\203U\211 \266\202\f\327=\203\211\205\251\211\307H\262>\203\323\204\323\204\323\n\211\205\303\211\307H\262\330=\204\323!\266\202\f>\203\343!\266\202\f>\203	\307U\203\372!\266\202\f>\203\n\211 \266\202\f>\203U\211 \266\202\f>\203&!\266\202\f>\203K	\307U\203=!\266\202\f>\203U\211 \266\202\f>\203\n\211 \210\266\202\f\326=\203j\242\262\266\202\f>\203z\242\262	\266\202\f\204N\f>\203\216!\266\202\f\327=\203\n\211\205\235\211\307H\262>\203\307\204\307\204\307\n\211\205\267\211\307H\262\330=\204\307!\266\202\f>\203\327!\266\202\f>\203\374	\307U\203\356!\266\202\f>\203\n\211 \266\202\f>\203I\211 \266\202\f>\203!\266\202\f>\203?	\307U\2031!\266\202\f>\203I\211 \266\202\f>\203\n\211 \210\266\202\f\327=\203\313\211\205]\211\307H\262>\203\207\204\207\204\207\n\211\205w\211\307H\262\330=\204\207!\266\202\f>\203\227!\266\202\f>\203\274	\307U\203\256!\266\202\f>\203\306\211 \266\202\f>\203\n\211 \210\266\202\f>\203\333!\266\202\f>\203 	\307U\203\362!\266\202\f>\203\n\211 \266\202\f>\203\n\211 \210\266\242\262\210\202\n \210\3070\207" [opascal-whitespace opascal-end-block-statements opascal-routine-statements opascal-expr-delimiters opascal-body-statements opascal-block-statements nil 0 done opascal-previous-token #[257 "\301\302\303\242\"\"\207" [opascal-compound-block-indent throw done opascal-stmt-line-indent-of] 6 "\n\n(fn TOKEN)"] #[257 "\301\302\303\242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 6 "\n\n(fn TOKEN)"] #[257 "\301\302\303\242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 6 "\n\n(fn TOKEN)"] #[257 "\300\301\302\242\303\"\"\207" [throw done opascal-line-indent-of 0] 6 "\n\n(fn TOKEN)"] #[0 "\300\301\302\"\207" [throw done 0] 3] #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (open-group 47 close-group 62)) throw opascal-open-group-indent opascal-group-start newline opascal-block-start forward semicolon colon equals opascal-begin-enclosing-tokens opascal-decl-delimiters opascal-unit-statements] 17 (#$ . 28596)])
#@19 

(fn FROM-TOKEN)
(defalias 'opascal-enclosing-indent-of #[257 "\211\211\205 \211\306H\262\307C\307C\307\211C\307\3102UC\211\311\242!\240\203R\211\242\211\205+ \211\306H\262\211>\204N\312\313\314\315\316\317\320\321\322\323\324\325\f\326\267\202o \327\310\330\242\242	>\203Z \306\202[ \n#\"\266\202I\331\242!\240\266\202I\f>\203\203 \332\242!\240\266\202I\f\f>\203\232 \242\262\242\240\266\202I\204.\f>\203\350 \327\310\f>\203\270 \333\242\306\"\202\342 \242\203\315 	>\203\315 \334\242!\202\342 \242\203\334 \334\242\n\"\202\342 \334\242\n\"\"\266\202I\f\335=\203\373 \"\266\202I\f'>\203\n\"\266\202I\f\336=\203\"	\"\266\202I\f(>\203D\327\310\334\242\2039\242\202<\242\n\"\"\266\202I\f\337=\203W\"\266\202I\f)>\203g \266\202I\f*>\203$\266\202I\340\242!\203\222\"\266\202I\f\341=\203\242!\266\202I\f+>\203\265\"\266\202I\342\242\242\"\203\311!\266\202I\f\343\267\202\204\363\f>\204\363\204\363\344=\204\363\"\266\202I\203G\242\203)\211\"\266\202I\242\262\242\240\266\202I\342\242\242\"\203G!\210\266\f\202I\f\335=\203A\"\266\202I\f'>\203U\n\"\266\202I\f\345\267\202t	\"\266\202I\"\266\202I\f)>\203\204 \266\202I\f*>\203\234$\266\202I\340\242!\203\257\"\266\202I\f\341=\203\277!\266\202I\f+>\203\322\"\266\202I\342\242\242\"\203\346!\266\202I\f\346\267\2027\204\f>\204\204\344=\204\"\266\202I\203\"\242\203G\211\"\210\266\f\202I\242\262\242\240\266\202I\342\242\242\"\203G!\210\266\f\242\240\210\210\202 \210\3060\207" [opascal-whitespace opascal-binary-ops opascal-indent-level opascal-end-block-statements opascal-expr-delimiters opascal-expr-statements 0 nil done opascal-previous-token #[514 "\302\303\242\203 \304\242\"\202 \304\242	\"\"\207" [opascal-indent-level opascal-case-label-indent throw done opascal-stmt-line-indent-of] 7 "\n\n(fn STMT-START TOKEN)"] #[514 "\301\302\303\242\206\n \242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 7 "\n\n(fn STMT-START TOKEN)"] #[514 "\301\302\303\242\206\n \242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 7 "\n\n(fn LAST-TOKEN TOKEN)"] #[514 "\302\303\304\242\240\210\305\242!\240\210\242\211\205 \211\306H\262\262\242\203' \211>\204 \242\203: \211\307=\203: \310\242	\"\202; \306\262\"\207" [opascal-whitespace opascal-indent-level throw done nil opascal-previous-token 0 equals opascal-line-indent-of] 8 "\n\n(fn LAST-TOKEN TOKEN)"] #[0 "\300\301\302\"\207" [throw done 0] 3] #[1028 "\302\303\242\203 \304=\203 >\203 \305\242!\202+ \242\203' \305\242	\"\202+ \306\242!\"\207" [opascal-binary-ops opascal-indent-level throw done comma opascal-indent-of opascal-previous-indent-of] 9 "\n\n(fn FROM-KIND LAST-TOKEN TOKEN TOKEN-KIND)"] #[514 "\301\302\242\203 \303\242\"\202 \304\242!\\\"\207" [opascal-indent-level throw done opascal-indent-of opascal-section-indent-of] 7 "\n\n(fn LAST-TOKEN TOKEN)"] #[257 "\301\302\303\242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 6 "\n\n(fn TOKEN)"] #[514 "\301\302\303\242\206\n \242\"\"\207" [opascal-indent-level throw done opascal-stmt-line-indent-of] 7 "\n\n(fn LAST-TOKEN TOKEN)"] #[257 "\301\302\303\242\"\"\207" [opascal-indent-level throw done opascal-line-indent-of] 6 "\n\n(fn LAST-TOKEN)"] #[514 "\301\302\242\203 \303\242\"\202 \304\242\305#\"\207" [opascal-indent-level throw done opascal-indent-of opascal-line-indent-of semicolon] 8 "\n\n(fn LAST-TOKEN TOKEN)"] #[514 "\242\211\205	 \211\301H\262\302=\206 \303\304\305\242\"\"\207" [opascal-indent-level 0 equals throw done opascal-indent-of] 7 "\n\n(fn LAST-TOKEN BEFORE-EQUALS)"] #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (open-group 70 close-group 98)) throw opascal-open-group-indent opascal-group-start opascal-block-start opascal-stmt-line-indent-of opascal-indent-of case else interface opascal-is-block-after-expr-statement asm opascal-composite-type-start #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (colon 464 equals 521)) equals #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (else 604 interface 616)) #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (colon 749 equals 807)) opascal-body-expr-statements opascal-decl-sections opascal-unit-sections opascal-previous-terminators opascal-enclosing-statements] 28 (#$ . 31855)])
(defalias 'opascal-corrected-indentation #[0 "\212\306 \307\310\"\216\311\312\313 \210\314`\212\315 \210\n\312w\210`)\"\204# \316\317!\210\320 \211\211\205- \211\321H\262\211\322=\203= \323\324!!\202\230 \211>\203G \321\202\230 \211\f>\203S \325!\202\230 \211>\203_ \326!\202\230 \211 >\203 \327\330\"\331!\203v \326!\202z \332\321\"\262\202\230 \211\333=\203\216 \332\334!\321\"\202\230 \335\206\227 \336`S!!\337 \210\266\202+\262)\207" [deactivate-mark inhibit-point-motion-hooks opascal-space-chars opascal-unit-statements opascal-comments opascal-decl-matchers match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] t nil opascal-progress-start eql beginning-of-line cl--assertion-failed (eql (point) (save-excursion (beginning-of-line) (skip-chars-forward opascal-space-chars) (point))) opascal-current-token 0 close-group opascal-indent-of opascal-group-start opascal-comment-indent-of opascal-section-indent-of opascal-block-start stop-on-class opascal-is-block-after-expr-statement opascal-stmt-line-indent-of else opascal-else-start opascal-enclosing-indent-of opascal-token-at opascal-progress-done opascal-match-block-statements] 7])
#@126 Indent the current line according to the current language construct.
If before the indent, the point is moved to the indent.
(defalias 'opascal-indent-line #[0 "\301 \302\303\"\216\304 \305 \210\306w\210\307 `W\203 `\306\223\210\310\311\"\210\312!\210b\210\306\211\223\262\262)\207" [opascal-space-chars match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] point-marker beginning-of-line nil opascal-corrected-indentation set-marker-insertion-type t indent-line-to] 6 (#$ . 37828) nil])
#@46 Abbrev table in use in OPascal mode buffers.
(defvar opascal-mode-abbrev-table nil (#$ . 38361))
(define-abbrev-table 'opascal-mode-abbrev-table nil)
#@31 

(fn BUFFER-VAR BUFFER-NAME)
(defalias 'opascal-ensure-buffer '(macro . #[514 "\300\301\302DD\303\304DEE\207" [when not buffer-live-p setq get-buffer-create] 8 (#$ . 38517)]))
#@26 

(fn TO-BUFFER THE-MSG)
(defalias 'opascal-log-msg #[514 "rq\210\300 r\301\302\"\216\303!\210db\210\304\305!`\"\210c*\262)\207" [internal--before-save-selected-window make-closure #[0 "\301\300!\207" [V0 internal--after-save-selected-window] 2] switch-to-buffer-other-window set-window-point get-buffer-window] 6 (#$ . 38703)])
#@69 Buffer to write OPascal mode debug messages to.  Created on demand.
(defvar opascal-debug-buffer nil (#$ . 39044))
#@33 

(fn FORMAT-STRING &rest ARGS)
(defalias 'opascal-debug-log #[385 "\205 \302	!\204 \303\304!\305	\306\307!\310\311B\"\312Q\"\207" [opascal-debug opascal-debug-buffer buffer-live-p get-buffer-create "*OPascal Debug Log*" opascal-log-msg format-time-string "%H:%M:%S " apply format "\n"] 9 (#$ . 39165)])
#@14 

(fn TOKEN)
(defalias 'opascal-debug-token-string #[257 "\300!\301\302\"\211\203 \303\304\"\305\224\205 \306P\262\207" [opascal-token-string string-match "^\\([^\n]*\\)\n\\(.+\\)?$" match-string 1 2 "..."] 6 (#$ . 39483)])
(defalias 'opascal-debug-show-current-token #[0 "\300 \301\302\303!#\207" [opascal-current-token opascal-debug-log "Token: %S %S" opascal-debug-token-string] 6 nil nil])
#@10 

(fn P)
(defalias 'opascal-debug-goto-point #[257 "\211b\207" [] 2 (#$ . 39892) "NGoto char: "])
(defalias 'opascal-debug-goto-next-token #[0 "\300\301 !\211\203 \211\302H\262\202 e\262b\207" [opascal-next-token opascal-current-token 1] 3 nil nil])
(defalias 'opascal-debug-goto-previous-token #[0 "\300\301 !\211\203 \211\302H\262\202 e\262b\207" [opascal-previous-token opascal-current-token 1] 3 nil nil])
#@16 

(fn FROM TO)
(defalias 'opascal-debug-show-current-string #[514 "\300\301{\"\207" [opascal-debug-log "String: %S"] 6 (#$ . 40316) "r"])
#@16 

(fn FROM TO)
(defalias 'opascal-debug-tokenize-region #[514 "\212\303 \304\305\"\216\306\307\310 \210b\210`W\2034 \311 \211\203& \211\312H\262\202) e\262b\210\313`\314\n#\210\202 \315\316!+\262)\207" [deactivate-mark inhibit-point-motion-hooks opascal-scanning-progress-step match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data evaporate] 3] t nil opascal-progress-start opascal-current-token 2 opascal-step-progress "Tokenizing" opascal-progress-done "Tokenizing done"] 7 (#$ . 40462) nil])
(defalias 'opascal-debug-tokenize-buffer #[0 "\300ed\"\207" [opascal-debug-tokenize-region] 3 nil nil])
(defalias 'opascal-debug-tokenize-window #[0 "\300\301 \302 \"\207" [opascal-debug-tokenize-region window-start window-end] 3 nil nil])
#@213 Indent the region, if Transient Mark mode is on and the region is active.
Otherwise, indent the current line or insert a TAB, depending on the
value of `opascal-tab-always-indents' and the current line position.
(defalias 'opascal-tab #[0 "\302 \203\f \303\304 \305 \"\207\204 \212	\306x\210n)\203 \307 \207\310c\207" [opascal-tab-always-indents opascal-space-chars use-region-p indent-region region-beginning region-end nil opascal-indent-line "	"] 3 (#$ . 41227) nil])
(make-obsolete 'opascal-tab 'indent-for-tab-command "24.4")
#@13 

(fn PATH)
(defalias 'opascal-is-directory #[257 "\300!\211\205	 \211@\207" [file-attributes] 3 (#$ . 41767)])
#@13 

(fn PATH)
(defalias 'opascal-is-file #[257 "\300!\211\205\n \211@?\207" [file-attributes] 3 (#$ . 41886)])
#@35 

(fn UNIT DIR &optional RECURSE)
(defalias 'opascal-search-directory #[770 "\300!\205g \301!\227\3022e \211\2034 \211@\303Q\227\230\203, \304!\203, \305\302\"\210\210A\266\202\202 \210\203c \211\203b \211@\211\306\235\204[ \307\303Q#\211\203Z \305\302\"\210\210A\266\202\202: \210\3100\266\202\207" [opascal-is-directory directory-files done "/" opascal-is-file throw ("." "..") opascal-search-directory nil] 12 (#$ . 42002)])
#@17 

(fn UNIT DIR)
(defalias 'opascal-find-unit-in-directory #[514 "\211\300\301\302\"\203 \303\304\"\262\305\262\301\306\"\203 \303\304\"\262\307#\207" [nil string-match "^\\(.+\\)\\.\\.\\.$" match-string 1 t "^\\(.+\\)[\\/]$" opascal-search-directory] 8 (#$ . 42459)])
#@13 

(fn UNIT)
(defalias 'opascal-find-unit-file #[257 "\3012< \204 \302\303\"\210\202: ;\203 \302\"\210\202: \211\2039 \211@\302\"\211\2031 \304\301\"\210\210A\266\202\202 \210\3050\207" [opascal-search-path done opascal-find-unit-in-directory "." throw nil] 7 (#$ . 42745)])
#@166 Find the specified OPascal source file according to `opascal-search-path'.
If no extension is specified, .pas is assumed.  Creates a buffer for the unit.

(fn UNIT)
(defalias 'opascal-find-unit #[257 "\300\301\"\203 \211\202 \211\302P\303!\211\204 \304\305\"\210\207\306!\210\307\310!\204( \310 \210\207" [string-match "^\\(.*\\)\\.[a-z]+$" ".pas" opascal-find-unit-file error "Unit not found: %s" find-file derived-mode-p opascal-mode] 6 (#$ . 43039) "sOPascal unit name: "])
#@64 Find the definition of the identifier under the current point.
(defalias 'opascal-find-current-def #[0 "\300\301!\207" [error "opascal-find-current-def: Not implemented yet"] 2 (#$ . 43529) nil])
#@254 Find the definition of the identifier under the current point, searching
in external units if necessary (as listed in the current unit's use clause).
The set of directories to search for a unit is specified by the global variable
`opascal-search-path'.
(defalias 'opascal-find-current-xdef #[0 "\300\301!\207" [error "opascal-find-current-xdef: Not implemented yet"] 2 (#$ . 43732) nil])
#@84 Find the body of the identifier under the current point, assuming
it is a routine.
(defalias 'opascal-find-current-body #[0 "\300\301!\207" [error "opascal-find-current-body: Not implemented yet"] 2 (#$ . 44126) nil])
#@107 Fill the text of the current comment, according to `fill-column'.
An error is raised if not in a comment.
(defalias 'opascal-fill-comment #[0 "\212\214\306 \211\211\205\f \211\307H\262\211>\204 \310\311!\266\202\202\312!\313!\211\203/ \211\314H\262\2022 e\262\211\211\203@ \211\315H\262\202C e\262\316!\317!\320\321\"\322\323 \324=\203\202 \317	!\320\321\"\325\320Z\315Z\321\"Q\262\262\325\fQ\262\326\n!\203\200 \nS\202\201 \n\327\330\"\210b\210\331c\210\332\333!\210\n}\210e\262dW\203\266 b\210\334\322\330#\203\266 \335\336\322\211#\210`T\262\202\230 db\210\337c\210Z\340ed\"\210)db\210\332\333!\210eb\210\322\210`\262dW\203\364 b\210\334\341\322\330#\203\364 \335\322\211#\210`T\262\202\326 d~\210\211b\210\211\322\211\223*\266\212*\207" [opascal-comments comment-start comment-end opascal-leading-spaces-re opascal-spaces-re fill-column opascal-current-token 0 error "Not in a comment" opascal-comment-block-start opascal-comment-block-end 1 2 opascal-comment-content-start opascal-column-of make-string 32 nil point-marker comment-single-line "//" opascal-is-literal-end set-marker-insertion-type t " " delete-char -1 re-search-forward replace-match "" "\n" fill-region "^"] 16 (#$ . 44351) nil])
#@142 If in a // comment, do a newline, indented such that one is still in the
comment block.  If not in a // comment, just does a normal newline.
(defalias 'opascal-new-comment-line #[0 "\301 \211\211\205\n \211\302H\262\303=\204 \304 \207\305!\211\211\203$ \211\306H\262\202' e\262\307!\310\311!\312\"\313\310Z\314Z\312\"Q\315 \210\316\261)\207" [comment-start opascal-current-token 0 comment-single-line newline opascal-comment-block-start 1 opascal-comment-content-start make-string opascal-column-of 32 "//" 2 delete-horizontal-space "\n"] 8 (#$ . 45607) nil])
#@20 

(fn TOKEN LIMIT)
(defalias 'opascal-match-token #[514 "\300\301!\210\2055 \211\203 \211\302H\262\202 e\262^\300\211\203( \211\303H\262\202+ e\262D!\210\211b\210\262\207" [set-match-data nil 2 1] 7 (#$ . 46185)])
(defconst opascal-font-lock-keywords (byte-code "\301\302\303\304\305\"!\306QD\207" [opascal-keywords ("\\_<\\(function\\|pro\\(cedure\\|gram\\)\\)[ 	]+\\([[:alpha:]][[:alnum:]_]*\\)" (1 font-lock-keyword-face) (3 font-lock-function-name-face)) "\\_<" regexp-opt mapcar symbol-name "\\_>"] 6))
#@71 OPascal mode font-lock defaults.  Syntactic fontification is ignored.
(defconst opascal-font-lock-defaults '(opascal-font-lock-keywords nil nil nil nil) (#$ . 46713))
(defconst opascal--syntax-propertize #[514 "b\210`W\205\200 \300\301\302#\205\200 \303\224\203\" \304\303\224\303\225\305\306$\210\202 \307\224\203E \310\311!\211A\312\233\241\210\313!\266\304\303\224\303\225\305\314$\210\315u\210\202 \316\224\203 \310\311!\211A\317\233\241\210\313!\266\320\224\320\225\212\316\321\320\224!8)\203l \322\202p \315u\210\323\211\203{ \304\305$\210\266\202 \207" [re-search-forward "/\\(\\*\\)\\|(\\(/\\)\\|\\(''\\|\"\"\\)" t 1 put-text-property syntax-table (2359297) 2 match-data ints 4 set-match-data (8454145) -1 3 8 0 syntax-ppss (1) nil] 10 "\n\n(fn START END)"])
#@45 Keystrokes for OPascal mode debug commands.
(defvar opascal-debug-mode-map (byte-code "\300 \301\211\203 \211@\302@A@#\210A\266\202\202 \210\207" [make-sparse-keymap (("n" opascal-debug-goto-next-token) ("p" opascal-debug-goto-previous-token) ("t" opascal-debug-show-current-token) ("T" opascal-debug-tokenize-buffer) ("W" opascal-debug-tokenize-window) ("g" opascal-debug-goto-point) ("s" opascal-debug-show-current-string)) define-key] 7) (#$ . 47503))
#@30 Keymap used in OPascal mode.
(defvar opascal-mode-map (byte-code "\301 \302\303\304DE\211\203 \211@\305@A@#\210A\266\202\202 \210\207" [opascal-debug-mode-map make-sparse-keymap ("u" opascal-find-unit) ("\361" opascal-fill-comment) "" define-key] 7) (#$ . 47970))
(byte-code "\300\301\302\303#\210\304\211\203( \211@\301N\203! \302N\204! \305\302\301N#\210A\266\202\202 \210\306\301\302\307#\210\310\311\312\303#\210\313\311\312\307#\207" [defvaralias delphi-mode-hook opascal-mode-hook nil (saved-value saved-variable-comment) put make-obsolete-variable "24.4" defalias delphi-mode opascal-mode make-obsolete] 7)
(defvar opascal-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [opascal-mode-hook variable-documentation put "Hook run after entering OPascal mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp opascal-mode-map definition-name opascal-mode] 4)
(defvar opascal-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204 \303\307\310\311#\210\312\313 !\210\307\302N\204- \303\307\302\304\314!#\210\306\300!\204B \303\300\310\311#\210\315\316\300\317\"\210!\210\300\302N\204P \303\300\302\304\320!#\210\303\311\321\322#\207" [opascal-mode-abbrev-table opascal-mode-map variable-documentation put purecopy "Keymap for `opascal-mode'." boundp opascal-mode-syntax-table definition-name opascal-mode (lambda (#1=#:def-tmp-var) (defvar opascal-mode-syntax-table #1#)) make-syntax-table "Syntax table for `opascal-mode'." (lambda (#1#) (defvar opascal-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `opascal-mode'." derived-mode-parent prog-mode] 5)
#@1180 Major mode for editing OPascal code.
\<opascal-mode-map>
\[opascal-find-unit]	- Search for a OPascal source file.
\[opascal-fill-comment]	- Fill the current comment.
\[opascal-new-comment-line]	- If in a // comment, do a new comment line.

\[indent-region] also works for indenting a whole region.

Customization:

 `opascal-indent-level'                (default 3)
    Indentation of OPascal statements with respect to containing block.
 `opascal-compound-block-indent'       (default 0)
    Extra indentation for blocks in compound statements.
 `opascal-case-label-indent'           (default 0)
    Extra indentation for case statement labels.
 `opascal-search-path'                 (default .)
    Directories to search when finding external units.
 `opascal-verbose'                     (default nil)
    If true then OPascal token processing progress is reported to the user.

Coloring:

 `opascal-keyword-face'                (default `font-lock-keyword-face')
    Face used to color OPascal keywords.

In addition to any hooks its parent mode `prog-mode' might have run,
this mode runs the hook `opascal-mode-hook', as the final or
penultimate step during initialization.
(defalias 'opascal-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R *=\204R \326\325*C#\210\327!\210\330\f!\210*\306\331!\210\332\306\333!\210\332\306\334!\210\307\306\335!\210\336\306\337!\210+\306\340!\210, \306\341!\210-!\306\342!\210\343\"\306\344!\210\345$\306\346!\210\347&)\350\351!\207" [delay-mode-hooks major-mode mode-name opascal-mode-map opascal-mode-syntax-table opascal-mode-abbrev-table make-local-variable t prog-mode opascal-mode "OPascal" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table indent-line-function opascal-indent-line comment-indent-function case-fold-search opascal-progress-last-reported-point nil font-lock-defaults tab-always-indent syntax-propertize-function comment-start "// " comment-start-skip "\\(?://\\|(\\*\\|{\\)[ 	]*" comment-end-skip "[ 	]*\\(?:\n\\|\\*)\\|}\\)" run-mode-hooks opascal-mode-hook local-abbrev-table opascal-font-lock-defaults opascal-tab-always-indents opascal--syntax-propertize] 5 (#$ . 49761) nil])
(provide 'opascal)
