;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. #@35 Keymap used in dart-mode buffers. (defvar dart-mode-map (make-sparse-keymap) (#$ . 87)) (byte-code "\301\302\303#\210\301\304\305#\210\306\307\310\311\312DD\313\314\315\316\317&\207" [dart-mode-map define-key [backtab] dart-dedent-simple " " indent-according-to-mode custom-declare-variable dart-indent-trigger-commands funcall function #[0 "\300\207" [(indent-for-tab-command yas-expand yas/expand dart-dedent-simple)] 1] "Commands that might trigger a `dart-indent-line' call." :type (repeat symbol) :group dart] 8) #@199 `indent-line-function' for Dart mode. When the variable `last-command' is equal to one of the symbols inside `dart-indent-trigger-commands' it cycles possible indentation levels from right to left. (defalias 'dart-indent-line-function #[0 " >\203\n=\203\303 \207\304 \207" [this-command dart-indent-trigger-commands last-command dart-indent-simple dart-indent-line-relative] 2 (#$ . 616)]) #@28 (fn &optional BACKWARDS) (defalias 'dart-indent-simple #[256 "\212\300\301\302\303 \"]!\210)i\303 W\205\304 \207" [indent-line-to 0 indent-next-tab-stop current-indentation back-to-indentation] 6 (#$ . 1018) nil]) (defalias 'dart-dedent-simple #[0 "\300\301!\207" [dart-indent-simple backwards] 2 nil nil]) (defalias 'dart-depth-of-line #[0 "\212\300 \210\301 @\302f\203:\302fz\303U\203:\302f\203:\302fz\304U\204:\302f\305U\204:\302fz\303U\2034\211S\262\302u\210\202\211\262)\207" [back-to-indentation syntax-ppss nil 41 40 10] 3]) (defalias 'dart-indent-line-relative #[0 "\301 \302\211\211\212\303 \210\30424`\305U\203\306\304\307\"\210\310y\210\311\312!\204 \307\262\313 \262\301 \262\306\304\307\"\210\202 \210)\212\203K\314\315Z_\\]!\210\202O\314\315!\210)i\313 W\205Y\316 \207" [tab-width dart-depth-of-line nil beginning-of-line done 1 throw t -1 looking-at "^[[:space:]]*$" current-indentation indent-line-to 0 back-to-indentation] 9]) (defvar dart--file-directives '("as" "deferred" "export" "hide" "import" "library" "of" "part" "show")) (defvar dart--builtins '("abstract" "as" "covariant" "deferred" "dynamic" "export" "extension" "external" "factory" "Function" "get" "implements" "import" "interface" "late" "library" "mixin" "operator" "part" "required" "set" "static" "typedef")) (defvar dart--keywords '("assert" "break" "case" "catch" "class" "const" "continue" "default" "do" "else" "enum" "extends" "final" "finally" "for" "if" "in" "is" "new" "rethrow" "return" "super" "switch" "this" "throw" "try" "var" "while" "with")) (defvar dart--types '("bool" "double" "int" "num" "void")) (defvar dart--constants '("false" "null" "true")) (defvar dart--async-keywords-re "\\<\\(?:a\\(?:sync\\|wait\\)\\|sync\\|yield\\)\\>\\*?") (defvar dart--number-re "\\_<-?\\(\\(?:[[:digit:]]+\\(?:\\.[[:digit:]]+\\)?\\|\\.[[:digit:]]+\\)\\(?:[Ee][+-]?[[:digit:]]+\\)?\\)") (defvar dart--hex-number-re "\\_<-?\\(\\(?:0[Xx]\\)[A-Fa-f[:digit:]]+\\)") (defvar dart--operator-declaration-re "operator[[:space:]]+\\([^(]+\\)") #@23 (fn &optional CASE) (defalias 'dart--identifier #[256 "\300\301\302\203 \202\f\303\304BBBB\207" [and (or word-start symbol-start) (zero-or-more (any 36 95)) alpha ((zero-or-more (or 36 95 alnum)))] 6 (#$ . 3078)]) (defvar dart--metadata-re "@\\(?:\\<\\|\\_<\\)[$_]*[[:alpha:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*") (defvar dart--types-re "\\(?:\\<\\|\\_<\\)[$_]*[[:upper:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*") (defvar dart--constants-re "\\<[[:upper:]]\\(?:[[:upper:]]\\|_\\)\\{2,\\}\\>") #@199 Font-lock matcher for string interpolation identifiers. These have the form $variableName. Can fontify entire match with group 0, or using group 1 for sigil, group 2 for variableName. (fn LIMIT) (defalias 'dart--string-interpolation-id-func #[257 "\3002T\301\211\211\302\303\304#\203M\305 \262\306\225\262\307 \262\3108\203C\3118\312U\2047\3118\2060`Sf\313=\204C\314!\210b\210\315\300\304\"\210\203b\210\202\315\300\301\"\266\2030\207" [result nil re-search-forward "\\(\\$\\)\\(_*[[:lower:]]\\(?:_\\|[[:alnum:]]\\)*\\)" t match-data 2 syntax-ppss 3 8 1 114 set-match-data throw] 8 (#$ . 3570)]) #@228 Font-lock matcher for string interpolation expressions. These have the form ${expression}. Can fontify entire match with group 0, or using group 1 for sigil, groups 2 and 4 for curly brackets, and 3 for contents. (fn LIMIT) (defalias 'dart--string-interpolation-exp-func #[257 "\3002\243\301\211\211\211\211\211\302\303\304#\203\234\212\305\306 8\205(\307\306 8\206#`Sf\310=?)\203\234`\262S\262\311Z\262\312\262\211\313V\203l`W\203l\305\306 8\203l\211\301f\211\314\267\202`\312\202a\315\202a\313\262\\\262\301u\210\202;`\262\211\313U\203\226S\262\316\211 \211\n\211 \257\n!\210b\210\317\300\304\"\210b\210\202\n\317\300\301\"\266\2060\207" [result nil search-forward "${" t 3 syntax-ppss 8 114 2 1 0 #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (123 88 125 92)) -1 set-match-data throw] 18 (#$ . 4197)]) #@241 Font-lock matcher function for function declarations. Matches function declarations before LIMIT that look like, "lowercaseIdentifier([...]) [[a]sync[*], {, =>]" For example, "main" in "void main() async" would be matched. (fn LIMIT) (defalias 'dart--function-declaration-func #[257 "\3002C\301\211\302\303\304#\203<\305\224\262\305\225\262\30615\307 \210\310\311!\2050\312D!\210\211b\210\313\300\304\"0\210\2026\210\211b\210\202\313\300\301\"\266\2020\207" [result nil re-search-forward "\\(\\(?:\\<\\|\\_<\\)[$_]*[[:lower:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)(" t 1 (scan-error) up-list looking-at "[[:space:]]+\\(?:=>\\|async\\*?\\|sync\\*\\|{\\)" set-match-data throw] 7 (#$ . 5092)]) #@244 Font-lock matcher function for abstract methods. Matches function declarations before LIMIT that look like, " [^ ][^=]* lowercaseIdentifier([...]);" For example, "compareTo" in " int compareTo(num other);" would be matched. (fn LIMIT) (defalias 'dart--abstract-method-func #[257 "\3012\204\302\211\303\304\305#\203}\306\224\262\306\225\262\3071v\310 \210`dW\205q`f\311U\205qb\210\312 \210i\313U\205q\314\315!?\205q\316\317`\"\302\305\320#)\266\203\205q\321\317`\"\302\305\320#)\266\203?\205q\211b\210\322D!\210\323\301\305\"0\210\202w\210\211b\210\202\266\323\301\302\"0\207" [inhibit-changing-match-data result nil re-search-forward "[^.]\\(\\(?:\\<\\|\\_<\\)[$_]*[[:lower:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)(" t 1 (scan-error) up-list 59 back-to-indentation 2 looking-at "return" " " buffer-substring-no-properties string-match "=" set-match-data throw] 10 (#$ . 5804)]) #@233 Font-lock matcher function for declared identifiers. Matches declared identifiers before LIMIT that look like, "finalConstVarOrType lowercaseIdentifier" For example, "height" in "const int height" would be matched. (fn LIMIT) (defalias 'dart--declared-identifier-func #[257 "\3002A\301\211\302\303\304#\203:\305\224\262\305\225\262\306\305!\307\235\2043\211b\210\310\311 8\2043\312D!\210\313\300\304\"\210\314\225b\210\202\313\300\301\"\266\2020\207" [result nil re-search-forward "\\(\\(?:\\(?:bool\\|const\\|d\\(?:ouble\\|ynamic\\)\\|final\\|get\\|int\\|num\\|set\\|v\\(?:ar\\|oid\\)\\)\\|\\(?:\\<\\|\\_<\\)[$_]*[[:upper:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)>*\\)\\(?:[[:space:]]\\|\n\\)+\\(\\(?:\\<\\|\\_<\\)[$_]*[[:lower:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)[^$(_[:alnum:]]" t 2 match-string ("bool" "double" "dynamic" "int" "num" "void" "var" "get" "set") 3 syntax-ppss set-match-data throw 1] 7 (#$ . 6721)]) #@129 Returns `t' if `point' is in parentheses, otherwise `nil'. In particular, parenthesized expressions or formal parameter lists. (defalias 'dart--in-parenthesized-expression-or-formal-parameter-list-p #[0 "\212\30026\3011\302 0\210\202\210\303\300\304\"\210`f\305>\203.\3061(\302 0\210\202.\210\303\300\304\"\210\303\300`f\307U\"0)\207" [result (scan-error) backward-up-list throw nil (91 123) (scan-error) 40] 4 (#$ . 7656)]) #@485 Font-lock matcher for declared identifier. Uses `dart--declared-identifier-func' to find candidates before LIMIT, and checks that they are not in parentheses. This matcher is an anchor to match multiple identifiers in a single variable declaration. From ECMA-408, variableDeclaration: declaredIdentifier (', ' identifier)* ; After this function sets anchor, font-lock will use the function `dart--declared-identifier-next-func' to find subsequent identifiers. (fn LIMIT) (defalias 'dart--declared-identifier-anchor-func #[257 "\3002/\301\302!\203(\303 \262\304 \204!\305!\210\306\225b\210\307\300\310\"\210\306\225b\210\202\307\300\301\"\2620\207" [result nil dart--declared-identifier-func match-data dart--in-parenthesized-expression-or-formal-parameter-list-p set-match-data 0 throw t] 5 (#$ . 8097)]) #@296 Font-lock matcher for subsequent identifiers. For use after `dart--declared-identifier-anchor-func' sets anchor, this function will look for subsequent identifers to fontify as declared variables. From ECMA-408, variableDeclaration: declaredIdentifier (', ' identifier)* ; (fn LIMIT) (defalias 'dart--declared-identifier-next-func #[257 "\3002i\301 @`V\204`f\302U\204\301 @W\203$\303\300\304\"\210\202`f\305U\203U\301 @U\203U\306\307!\203M\310\311\224\311\225D!\210\312\225b\210\303\300\313\"\210\202\303\300\304\"\210\202`dW\203a\304u\210\202\303\300\304\"\210\202\207" [result syntax-ppss 59 throw nil 44 looking-at ",[[:space:]]+\\(\\(?:\\<\\|\\_<\\)[$_]*[[:lower:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)" set-match-data 1 0 t] 5 (#$ . 8931)]) #@413 Font-lock matcher for start of anonymous functions. Looks for opening parenthesis, tries to jump to opening parenthesis, ensure it is not preceded by for, while, etc. Then tries to jump to closing parenthesis and check if followed by " {" or " =>". Used with `dart--untyped-parameter-anchored-matcher' to fontify untyped parameters. For example, in (untypedParameter) => untypedParameter.length (fn LIMIT) (defalias 'dart--anonymous-function-matcher #[257 "\3002P\301\211\302\303\304#\203I\305\224\262\305\225\262\306\307\310 \"\204\3111)\312 0\210\202/\210\313\300\301\"\210\314\315!\203C\316D!\210\211b\210\313\300\304\"\210\211b\210\202\313\300\301\"\266\2020\207" [result nil search-forward "(" t 0 looking-back "\\(?:\\(?:do\\|for\\|if\\|switch\\|while\\)[[:space:]]\\|super\\)(" point-at-bol (scan-error) up-list throw looking-at "[[:space:]]\\(?:=>\\|{\\)" set-match-data] 7 (#$ . 9714)]) #@286 Font-lock anchored-matcher for untyped parameters. Searches forward for for lowercase idenitifer and ensures depth is still same. Used with `dart--anonymous-function-matcher' to fontify untyped parameters. For example, in (untypedParameter) => untypedParameter.length (fn LIMIT) (defalias 'dart--untyped-parameter-anchored-matcher #[257 "\300\211\3012P\300f\302=\203\303\301\300\"\210\304 @\305\306!\203J\307\224\262\307\225\262b\210`V\2044\304 @W\203<\303\301\300\"\210\202\310D!\210\303\301\311\"\210\202\210\303\301\300\"0\207" [nil result 41 throw syntax-ppss re-search-forward "\\(_+\\|\\(?:\\<\\|\\_<\\)[$_]*[[:lower:]]\\(?:\\$\\|_\\|[[:alnum:]]\\)*\\)[),]" 1 set-match-data t] 7 (#$ . 10637)]) (defalias 'dart--get-point-at-end-of-list #[0 "\300\212\301 \210`\262)\207" [nil up-list] 2]) (defvar dart-font-lock-defaults '((dart-font-lock-keywords-1 dart-font-lock-keywords-1 dart-font-lock-keywords-2 dart-font-lock-keywords-3))) (defvar dart-font-lock-keywords-1 (byte-code "\302\303\"\304B\305 \306B\307BBB\207" [dart--file-directives dart--operator-declaration-re regexp-opt words font-lock-builtin-face (dart--function-declaration-func . font-lock-function-name-face) (1 font-lock-function-name-face) ((dart--abstract-method-func . font-lock-function-name-face))] 4)) (defvar dart-font-lock-keywords-2 (byte-code "\306 \307\"\306\n\307\"\310B\306 \307\"\311B\f\312B \313B\311B\311B\306\307\"\314B\314B\315\316B\317BBBBBBBBBBBB\207" [dart--async-keywords-re dart--keywords dart--builtins dart--constants dart--hex-number-re dart--number-re regexp-opt words font-lock-builtin-face font-lock-constant-face (1 font-lock-constant-face) (1 font-lock-constant-face) font-lock-type-face (dart--function-declaration-func . font-lock-function-name-face) (1 font-lock-function-name-face) ((dart--abstract-method-func . font-lock-function-name-face)) dart--metadata-re dart--constants-re dart--types dart--types-re dart--operator-declaration-re] 13)) (defvar dart-font-lock-keywords-3 (append dart-font-lock-keywords-2 '((dart--declared-identifier-func . font-lock-variable-name-face) (dart--declared-identifier-anchor-func dart--declared-identifier-next-func nil nil (0 font-lock-variable-name-face)) (dart--anonymous-function-matcher dart--untyped-parameter-anchored-matcher (dart--get-point-at-end-of-list) nil (0 font-lock-variable-name-face)) (dart--string-interpolation-id-func (0 font-lock-variable-name-face t)) (dart--string-interpolation-exp-func (0 font-lock-variable-name-face t))))) #@441 Sets syntax-table text properties for raw and/or multiline strings. We use fences uniformly for consistency. In raw strings, we modify backslash characters to have punctuation syntax rather than escape syntax. String interpolation is not handled correctly yet, but the fixes to quote characters in multiline strings, and escape characters in raw strings, ensures that code outside of strings is not highlighted as strings. (fn BEG END) (defalias 'dart-syntax-propertize-function #[514 "b\210\300\301 8\203\302\301 8b\210\303 \210\202\304\305\306#\205\232\307\224\310\311!\312\232\310\307!\313\211T\314\315\316%\210\317?\2058\320P!\204M\304?\205E\321P\306#\203\225\322\225\313S\314\315\316%\210\323T\307Z\"\211\203\220\211@\324\314\"\315\232\203u\325\211T\314#\210\203\211\211f\326=\203\211\313\211T\314\327\316%\210A\266\202\202_\210\211b\266\266\202\207" [3 syntax-ppss 8 beginning-of-line re-search-forward "\\(r?\\)\\(\"\\{3\\}\\|'\\{3\\}\\|\"\\|'\\)" t 2 match-string-no-properties 1 "r" put-text-property syntax-table (15) nil looking-at "\\(?:\\\\\\\\\\)*" "[^\\]\\(?:\\\\\\\\\\)*" 0 number-sequence get-text-property remove-text-properties 92 (1)] 14 (#$ . 13175)]) (defvar dart-mode-hook nil) (byte-code "\300\301N\204\f\302\300\301\303#\210\304\305!\204\302\305\306\307#\210\300\207" [dart-mode-hook variable-documentation put "Hook run after entering Dart mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp dart-mode-map definition-name dart-mode] 4) (defvar dart-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" [dart-mode-abbrev-table dart-mode-map variable-documentation put purecopy "Keymap for `dart-mode'." boundp dart-mode-syntax-table definition-name dart-mode (lambda (#1=#:def-tmp-var) (defvar dart-mode-syntax-table #1#)) make-syntax-table "Syntax table for `dart-mode'." (lambda (#1#) (defvar dart-mode-abbrev-table #1#)) define-abbrev-table nil "Abbrev table for `dart-mode'." derived-mode-parent prog-mode] 5) #@139 Major mode for editing Dart files. The hook `dart-mode-hook' is run with no args at mode initialization. Key bindings: \{dart-mode-map} (defalias 'dart-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 4=\204R\326 \3254C#\210\327 !\210\330\f!\210 4\331\332\333\"\210\331\334\335\"\210\331\336\337\"\210\331\340\341\"\210\331\342\343\"\210\331\344\343\"\210\306\345!\210\346%\306\347!\210\350'\306\351!\210\352)\353567\306\354!\210\355,\3568\3579\306\360!\210\3610)\362\363!\207" [delay-mode-hooks major-mode mode-name dart-mode-map dart-mode-syntax-table dart-mode-abbrev-table make-local-variable t prog-mode dart-mode "Dart" 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 modify-syntax-entry 47 "_ 124b" 42 ". 23" 10 "> b" 39 "\"" 62 "." 60 electric-indent-chars (10 41 93 125) comment-start "//" comment-end "" 80 indent-line-function dart-indent-line-function nil 2 syntax-propertize-function dart-syntax-propertize-function run-mode-hooks dart-mode-hook local-abbrev-table fill-column dart-font-lock-defaults font-lock-defaults indent-tabs-mode tab-width] 5 (#$ . 15502) nil]) (provide 'dart-mode)