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



(byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\207" [require cl-lib custom-declare-group ruby nil "Major mode for editing Ruby code." :prefix "ruby-" :group languages] 8)#@38 Keywords at the beginning of blocks.
(defconst ruby-block-beg-keywords '("class" "module" "def" "if" "unless" "case" "while" "until" "for" "begin" "do") (#$ . 267))#@42 Regexp to match the beginning of blocks.
(defconst ruby-block-beg-re (regexp-opt ruby-block-beg-keywords) (#$ . 437))#@52 Regexp to match keywords that nest without blocks.
(defconst ruby-non-block-do-re "\\_<\\(for\\|rescue\\|until\\|while\\)\\_>" (#$ . 560))#@52 Regexp to match where the indentation gets deeper.
(defconst ruby-indent-beg-re "^\\(\\s *\\(?:class\\|def\\|module\\)\\|\\(?:begin\\|case\\|for\\|if\\|un\\(?:less\\|til\\)\\|while\\)\\)\\_>" (#$ . 704))#@57 Modifiers that are the same as the beginning of blocks.
(defconst ruby-modifier-beg-keywords '("if" "unless" "while" "until") (#$ . 913))#@60 Regexp to match modifiers same as the beginning of blocks.
(defconst ruby-modifier-beg-re (regexp-opt ruby-modifier-beg-keywords) (#$ . 1056))#@28 Regexp to match modifiers.
(defconst ruby-modifier-re (byte-code "\301\302B!\207" [ruby-modifier-beg-keywords regexp-opt "rescue"] 3) (#$ . 1204))#@78 Keywords where the indentation gets shallower in middle of block statements.
(defconst ruby-block-mid-keywords '("then" "else" "elsif" "when" "in" "rescue" "ensure") (#$ . 1357))#@80 Regexp for where the indentation gets shallower in middle of block statements.
(defconst ruby-block-mid-re (regexp-opt ruby-block-mid-keywords) (#$ . 1541))#@35 Regexp to match boolean keywords.
(defconst ruby-block-op-keywords '("and" "or" "not") (#$ . 1703))#@42 Regexp to match hanging block modifiers.
(defconst ruby-block-hanging-re (byte-code "\302\303	\"!\207" [ruby-modifier-beg-keywords ruby-block-op-keywords regexp-opt append] 4) (#$ . 1808))
(defconst ruby-block-end-re "\\_<end\\_>")#@65 Regexp to match the beginning of a defun, in the general sense.
(defconst ruby-defun-beg-re "\\(def\\|class\\|module\\)" (#$ . 2046))#@61 Regexp to match the beginning of a singleton class context.
(defconst ruby-singleton-class-re "class\\s *<<" (#$ . 2185))#@45 Regexp to match the beginning of a heredoc.
(defconst ruby-here-doc-beg-re "\\(<\\)<\\([~-]\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\)" (#$ . 2312))
(defconst ruby-expression-expansion-re "#\\({[^}\n\\]*\\(\\\\.[^}\n\\]*\\)*}\\|\\(?:\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\|\\$[^a-zA-Z \n]\\)")#@122 Return a regexp to find the end of a heredoc.

This should only be called after matching against `ruby-here-doc-beg-re'.
(defalias 'ruby-here-doc-end-match #[0 "\300\301\302!\205 \303\304\301\305!\206 \301\306!\206 \301\307!!Q\207" ["^" match-string 2 "[ 	]*" regexp-quote 4 5 6] 5 (#$ . 2633)])
(defconst ruby-delimiter (concat "[?$/%(){}#\"'`.:]\\|<<\\|\\[\\|\\]\\|\\_<\\(" ruby-block-beg-re "\\)\\_>\\|" ruby-block-end-re "\\|^=begin\\|" ruby-here-doc-beg-re))#@55 Regexp to match where the indentation gets shallower.
(defconst ruby-negative (concat "^[ 	]*\\(\\(" ruby-block-mid-re "\\)\\>\\|" ruby-block-end-re "\\|}\\|\\]\\)") (#$ . 3105))#@28 Regexp to match operators.
(defconst ruby-operator-re "[-,.+*/%&|^~=<>:]\\|\\\\$" (#$ . 3289))#@51 List of characters that symbol names may contain.
(defconst ruby-symbol-chars "a-zA-Z0-9_" (#$ . 3389))#@26 Regexp to match symbols.
(defconst ruby-symbol-re (concat "[" ruby-symbol-chars "]") (#$ . 3498))#@117 Regexp to match the beginning of an endless method definition.

It should match the part after "def" and until "=".
(defconst ruby-endless-method-head-re (byte-code "\301\302\211#\207" [ruby-symbol-re format " *\\(%s+\\.\\)?%s+[?!]? *\\(([^()]*)\\)? +="] 4) (#$ . 3602))#@62 List of built-in methods that require at least one argument.
(defconst ruby-builtin-methods-with-reqs '("at_exit" "autoload" "autoload?" "callcc" "catch" "eval" "exec" "format" "lambda" "load" "loop" "open" "p" "printf" "proc" "putc" "require" "require_relative" "spawn" "sprintf" "syscall" "system" "throw" "trace_var" "trap" "untrace_var" "warn" "alias_method" "attr" "attr_accessor" "attr_reader" "attr_writer" "define_method" "extend" "include" "module_function" "prepend" "private_class_method" "private_constant" "public_class_method" "public_constant" "refine" "using") (#$ . 3879))#@61 List of built-in methods that only have optional arguments.
(defconst ruby-builtin-methods-no-reqs '("__callee__" "__dir__" "__method__" "abort" "binding" "block_given?" "caller" "exit" "exit!" "fail" "fork" "global_variables" "local_variables" "print" "private" "protected" "public" "puts" "raise" "rand" "readline" "readlines" "sleep" "srand") (#$ . 4474))
(defvar ruby-use-smie t)
(make-obsolete-variable 'ruby-use-smie nil "28.1")#@27 Keymap used in Ruby mode.
(defvar ruby-mode-map (byte-code "\301 \204\f \302\303\304#\210\203 \302\305\306#\210\302\307\310#\210\302\311\312#\210\302\313\314#\210\302\315\316#\210\302\317\320#\210\207" [ruby-use-smie make-sparse-keymap define-key [134217745] ruby-indent-exp [134217732] smie-down-list [134217744] ruby-beginning-of-block [134217742] ruby-end-of-block "{" ruby-toggle-block "'" ruby-toggle-string-quotes "" ruby-find-library-file] 5) (#$ . 4914))#@17 Ruby Mode Menu.
(defvar ruby-mode-menu nil (#$ . 5396))
(easy-menu-do-define 'ruby-mode-menu ruby-mode-map "Ruby Mode Menu." '("Ruby" ["Beginning of Block" ruby-beginning-of-block t] ["End of Block" ruby-end-of-block t] ["Toggle Block" ruby-toggle-block t] "--" ["Toggle String Quotes" ruby-toggle-string-quotes t] "--" ["Backward Sexp" backward-sexp t] ["Forward Sexp" forward-sexp t] ["Indent Sexp" ruby-indent-exp :visible (not ruby-use-smie)] ["Indent Sexp" prog-indent-sexp :visible ruby-use-smie]))#@35 Syntax table to use in Ruby mode.
(defvar ruby-mode-syntax-table (byte-code "\300 \301\302\303#\210\301\304\303#\210\301\305\303#\210\301\306\307#\210\301\310\311#\210\301\312\313#\210\301\314\315#\210\301\316\317#\210\301\320\315#\210\301\321\315#\210\301\322\323#\210\301\324\323#\210\301\325\323#\210\301\326\323#\210\301\327\323#\210\301\330\323#\210\301\331\323#\210\301\332\323#\210\301\333\323#\210\301\334\323#\210\301\335\323#\210\301\336\337#\210\301\340\341#\210\301\342\343#\210\301\344\345#\210\301\346\347#\210\301\350\351#\210\207" [make-syntax-table modify-syntax-entry 39 "\"" 34 96 35 "<" 10 ">" 92 "\\" 36 "'" 95 "_" 58 64 60 "." 62 38 124 37 61 47 43 42 45 59 40 "()" 41 ")(" 123 "(}" 125 "){" 91 "(]" 93 ")["] 5) (#$ . 5906))
(byte-code "\300\301\302\303\304DD\305\306\307\310\311&\210\300\312\302\303\313DD\314\306\315\310\316&\210\300\317\302\303\320DD\321\306\315\310\316&\207" [custom-declare-variable ruby-indent-tabs-mode funcall function #[0 "\300\207" [nil] 1 #1=""] "Indentation can insert tabs in Ruby mode if this is non-nil." :type boolean :safe booleanp ruby-indent-level #[0 "\300\207" [2] 1 #1#] "Number of spaces for each indentation step in `ruby-mode'." integer integerp ruby-comment-column #[0 "\300\301!\207" [default-value comment-column] 2 #1#] "Indentation column of comments."] 8)#@61 Keywords that can be used in `ruby-align-to-stmt-keywords'.
(defconst ruby-alignable-keywords '(if while unless until begin case for def) (#$ . 7267))
(byte-code "\301\302\303\304\305DD\306\307\310\311\312\313\314\315\310\316\317\"BFF\320\321\322\323&	\210\301\324\303\304\325DD\326\307\327\320\330\322\323&	\210\301\331\303\304\332DD\333\307\334\320\335\322\336&	\210\301\337\303\304\340DD\341\307\327\320\330\322\336&	\210\301\342\303\304\343DD\344\307\327\320\330\322\336&	\210\301\345\303\304\346DD\347\307\327\320\330\322\336&	\210\301\350\303\304\351DD\352\307\327\320\330\322\336&	\210\301\353\303\304\354DD\355\307\327\320\330&\210\301\356\303\304\357DD\360\307\361%\210\301\362\303\304\363DD\364\307\365%\210\301\366\303\304\367DD\370\307\371%\210\301\372\303\304\373DD\374\307\327\375\376&\210\301\377\303\304\201@ DD\201A \307\201B \322\323&\210\301\201C \303\304\201D DD\201E \307\201F \322\323&\210\301\201G \303\304\201H DD\201I \307\327\375\376&\210\301\201J \303\304\201K DD\201L \307\327\320\330\322\336&	\210\201M \201N !\207" [ruby-alignable-keywords custom-declare-variable ruby-align-to-stmt-keywords funcall function #[0 "\300\207" [(def)] 1 #1=""] "Keywords after which we align the expression body to statement.\n\nWhen nil, an expression that begins with one these keywords is\nindented to the column of the keyword.  Example:\n\n  tee = if foo\n          bar\n        else\n          qux\n        end\n\nIf this value is t or contains a symbol with the name of given\nkeyword, the expression is indented to align to the beginning of\nthe statement:\n\n  tee = if foo\n    bar\n  else\n    qux\n  end\n\nOnly has effect when `ruby-use-smie' is t." :type choice (const :tag "None" nil) (const :tag "All" t) repeat :tag "User defined" mapcar #[257 "\300D\207" [const] 3 "\n\n(fn KW)"] :safe listp :version "24.4" ruby-align-chained-calls #[0 "\300\207" [nil] 1 #1#] "If non-nil, align chained method calls.\n\nEach method call on a separate line will be aligned to the column\nof its parent. Example:\n\n  my_array.select { |str| str.size > 5 }\n          .map    { |str| str.downcase }\n\nWhen nil, each method call is indented with the usual offset:\n\n  my_array.select { |str| str.size > 5 }\n    .map    { |str| str.downcase }\n\nOnly has effect when `ruby-use-smie' is t." boolean booleanp ruby-method-params-indent #[0 "\300\207" [t] 1 #1#] "Indentation  of multiline method parameters.\n\nWhen t, the parameters list is indented to the method name:\n\n  def foo(\n        baz,\n        bar\n      )\n    hello\n  end\n\nWhen a number, indent the parameters list this many columns\nagainst the beginning of the method (the \"def\" keyword).\n\nThe value nil means the same as 0:\n\n  def foo(\n    baz,\n    bar\n  )\n    hello\n  end\n\nOnly has effect when `ruby-use-smie' is t." (choice (const :tag "Indent to the method name" t) (number :tag "Indent specified number of columns against def") (const :tag "Indent to def" nil)) #[257 "\211\300>\206 \211\247\207" [(t nil)] 3 "\n\n(fn VAL)"] "29.1" ruby-block-indent #[0 "\300\207" [t] 1 #1#] "Non-nil to align the body of a block to the statement's start.\n\nThe body and the closer will be aligned to the column where the\nstatement containing the block starts. Example:\n\n  foo.bar\n    .each do\n    baz\n  end\n\nIf nil, it will be aligned instead to the beginning of the line\ncontaining the block's opener:\n\n  foo.bar\n    .each do\n      baz\n    end\n\nOnly has effect when `ruby-use-smie' is t." ruby-after-operator-indent #[0 "\300\207" [t] 1 #1#] "Non-nil to use structural indentation after binary operators.\n\nThe code will be aligned to the implicit parent expression,\naccording to the operator precedence:\n\n  qux = 4 + 5 *\n            6 +\n        7\n\nSet it to nil to align to the beginning of the statement:\n\n  qux = 4 + 5 *\n    6 +\n    7\n\nOnly has effect when `ruby-use-smie' is t." ruby-method-call-indent #[0 "\300\207" [t] 1 #1#] "Non-nil to use the structural indentation algorithm.\n\nThe method call will be aligned to the implicit parent\nexpression, according to the operator precedence:\n\n  foo = subject\n          .update(\n            1\n          )\n\nSet it to nil to align to the beginning of the statement:\n\n  foo = subject\n    .update(\n      1\n    )\n\nOnly has effect when `ruby-use-smie' is t." ruby-parenless-call-arguments-indent #[0 "\300\207" [t] 1 #1#] "Non-nil to align arguments in a parenless call vertically.\n\nExample:\n\n  qux :+,\n      bar,\n      :[]=,\n      bar\n\nSet it to nil to align to the beginning of the statement:\n\n  qux :+,\n    bar,\n    :[]=,\n    bar\n\nOnly has effect when `ruby-use-smie' is t." ruby-deep-arglist #[0 "\300\207" [t] 1 #1#] "Deep indent lists in parenthesis when non-nil.\nAlso ignores spaces after parenthesis when `space'.\nOnly has effect when `ruby-use-smie' is nil." ruby-deep-indent-paren #[0 "\300\207" [(40 91 93 t)] 1 #1#] "Deep indent lists in parenthesis when non-nil.\nThe value t means continuous line.\nAlso ignores spaces after parenthesis when `space'.\nOnly has effect when `ruby-use-smie' is nil." (choice (const nil) character (repeat (choice character (cons character (choice (const nil) (const t))) (const t)))) ruby-deep-indent-paren-style #[0 "\300\207" [space] 1 #1#] "Default deep indent style.\nOnly has effect when `ruby-use-smie' is nil." (choice (const t) (const nil) (const space)) ruby-encoding-map #[0 "\300\207" [((us-ascii) (utf-8) (shift-jis . cp932) (shift_jis . cp932) (japanese-cp932 . cp932))] 1 #1#] "Alist to map encoding name from Emacs to Ruby.\nAssociating an encoding name with nil means it needs not be\nexplicitly declared in magic comment." (repeat (cons (symbol :tag "From") (symbol :tag "To"))) ruby-insert-encoding-magic-comment #[0 "\300\207" [t] 1 #1#] "Insert a magic Ruby encoding comment upon save if this is non-nil.\nThe encoding will be auto-detected.  The format of the encoding comment\nis customizable via `ruby-encoding-magic-comment-style'.\n\nWhen set to `always-utf8' an utf-8 comment will always be added,\neven if it's not required." :group ruby ruby-encoding-magic-comment-style #[0 "\300\207" [ruby] 1 #1#] "The style of the magic encoding comment to use." (choice (const :tag "Emacs Style" emacs) (const :tag "Ruby Style" ruby) (const :tag "Custom Style" custom)) ruby-custom-encoding-magic-comment-template #[0 "\300\207" ["# encoding: %s"] 1 #1#] "A custom encoding comment template.\nIt is used when `ruby-encoding-magic-comment-style' is set to `custom'." string ruby-use-encoding-map #[0 "\300\207" [t] 1 #1#] "Use `ruby-encoding-map' to set encoding magic comment if this is non-nil." ruby-toggle-block-space-before-parameters #[0 "\300\207" [t] 1 #1#] "When non-nil, ensure space between the \"toggled\" curly and parameters.\nThis only affects the output of the command `ruby-toggle-block'." require smie] 15)
(defconst ruby-smie-grammar '((:smie-closer-alist (#14="def" . "end") (#13="begin" . "end") (#12="do" . "end") (#11="class" . "end") (#10="module" . "end") (#9="for" . "end") (#8="[" . #16="]") ("{" . "}") (#7="while" . "end") (#6="until" . "end") (#5="unless" . "end") (#4="if" . "end") (#3="case" . #15="end") (#2="opening-|" . #1="closing-|")) ("**" 403 414) ("%" 377 390) ("/" 378 391) ("*" 379 392) ("-" 353 365) ("+" 354 366) (">>" 329 341) ("<<" 330 342) ("|" 303 316) ("&" 304 317) ("^" 305 318) ("<=" 273 289) ("<" 274 290) (">=" 275 291) (">" 276 292) ("!~" 277 258) ("=~" 278 259) ("!=" 244 260) ("===" 245 261) ("==" 246 262) ("<=>" 247 231) ("||" 219 232) ("&&" 220 233) ("..." 181 206) (".." 182 207) ("||=" 147 124) ("&&=" 148 125) (">>=" 149 126) ("<<=" 150 127) ("^=" 151 128) ("|=" 152 129) ("&=" 153 130) ("**=" 154 131) ("%=" 155 132) ("/=" 156 133) ("*=" 157 134) ("-=" 158 135) ("+=" 159 136) (#1# 0 (436)) (#2# (437) 0) ("when" 16 16) ("elsif" 14 14) ("else" 27 28) ("then" 29 40) ("=>" 102 101) ("in" 16 16) ("rescue" 15 15) ("ensure" 15 15) (#3# (438) 1) (#4# (439) 1) (#5# (440) 1) (#6# (441) 1) (#7# (442) 1) ("{" (443) 2) (#8# (444) 3) (#9# (445) 1) (#10# (446) 1) (#11# (447) 1) (#12# (448) 1) (#13# (449) 1) (#14# (450) 1) ("?" 194 170) ("," 89 89) ("=" 113 100) (" @ " 451 75) ("." 425 425) ("def=" 195 208) (#15# 1 (452)) ("}" 2 (453)) (#16# 3 (454)) (":" 170 183) ("or" 62 76) ("and" 63 77) (";" 51 51) ("iuwu-mod" 64 78)))
(defalias 'ruby-smie--bosp #[0 "\212\300\301x\210n\203 `S\206 `Sf\302=?\206- `Sf\303=\206- `Sf\304=\205- \305`S!\306\232)\207" [" 	" nil 92 59 61 syntax-after (1)] 2])
(defalias 'ruby-smie--implicit-semi-p #[0 "\212\300\301x\210n\206Q `Sf\302>\206Q `Sf\303>\203$ \304`S!@\305>?\206Q `Sf\306=\2035 \212\307 )\310\235\206Q \304`S!@\311=\203H \212\307 )\312\235\206Q \212\313d!\210\314\315!))?\207" [" 	" nil (91 40) (59 45 43 42 47 58 46 44 92 38 62 60 37 126 94 61 63) syntax-after (3 7 15) 124 ruby-smie--backward-token ("|" "||") 2 ("iuwu-mod" "and" "or") forward-comment looking-at "&?\\."] 2])#@23 

(fn &optional SKIP)
(defalias 'ruby-smie--redundant-do-p #[256 "\212\211\203	 \300\301!\210\302\303\304!8\305\235)\207" [backward-word-strictly 1 2 smie-backward-sexp ";" ("while" "until" "for")] 4 (#$ . 16215)])
(defalias 'ruby-smie--opening-pipe-p #[0 "\212`Sf\300=\203\f \301u\210\302\303x\210`Sf\304=\206 \305\306`\307Z\")\207" [124 -1 " 	\n" nil 123 looking-back "\\_<do" 2] 4])
(defalias 'ruby-smie--closing-pipe-p #[0 "\212`Sf\300=\203\f \301u\210\302\303\304 \305#\205 \306 )\207" [124 -1 re-search-backward "|" line-beginning-position t ruby-smie--opening-pipe-p] 4])#@12 

(fn POS)
(defalias 'ruby-smie--args-separator-p #[257 "\211\300 W\205B hz\301=\204\" h\302>\205B `S\206 `Sfz\301=\205B \212\211b\210\303fz\301=\2035 \304\305!?\206A \306!@\307>\206A \304\310!)\207" [line-end-position 119 (33 63) nil looking-at "\\_<\\(and\\|do\\|e\\(?:ls\\(?:e\\|if\\)\\|nd\\)\\|if\\|or\\|un\\(?:less\\|til\\)\\|while\\)\\_>" syntax-after (7 15) "[([]\\|[-+!~:@$]\\(?:\\sw\\|\\s_\\)"] 3 (#$ . 16801)])
(defalias 'ruby-smie--before-method-name #[0 "gz\300=\205\" `Sf\301=\203 `S\206 `Sf\301=?\206\" \302\303\304 \"\207" [119 46 looking-back "^\\s *def\\s +\\=" line-beginning-position] 3])
(defalias 'ruby-smie--forward-token #[0 "`\301\302w\210\303\304!\203 \303\305!\203 \306`\307\"b\210\310\207\303\311!\2034 \312 \2034 l\203. \307u\210\2022 \313\307!\210\310\207\313d!\210\211`W\203K \212\314`b\210!)\203K \315\207\303\305!\203S \316\207\317 \320 \203` \321P\262\211\322\235\203v \212\323\324!\210\325 )\203r \207\266\326\207\327\302\330\331$\266\203\203\240 \307GZu\210\332\262\333 \203\226 \266\334\207\335 \203\237 \266\336\207\207\330\337\"\203\257 \324u\210\211\340\324O\207\211\316\232\203\302 \303\341!\203\302 \340\225b\210\342 \207\211\343\267\202\347 \344\345!\204\317 \207\212\313d!\210`)\346 V\203\337 \342 \207\266\310\207\266\321\207\211\347\232\203\367 \303!\203\367 \266\350\207\207" [ruby-endless-method-head-re " 	" nil looking-at "\n" "\\s\"" scan-sexps 1 ";" "[\n#]" ruby-smie--implicit-semi-p forward-comment ruby-smie--args-separator-p " @ " "" ruby-smie--before-method-name smie-default-forward-token "." ("unless" "if" "while" "until") forward-word-strictly -1 ruby-smie--bosp "iuwu-mod" "\\`|[*&]*\\'" string-match t "|" ruby-smie--opening-pipe-p "opening-|" ruby-smie--closing-pipe-p "closing-|" "\\`[^|]+|\\'" 0 "\\\\\n" ruby-smie--forward-token #s(hash-table size 2 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("do" 200 "&." 227)) ruby-smie--redundant-do-p skip line-end-position "def" "def="] 11])
(defalias 'ruby-smie--backward-token #[0 "`\301`[!\210\211\302 V\203 \303 \203 \304\305w\210\306\207n\203( o\204( \307`\310\"b\210\306\207\211`V\203: n\204: \311!\203: \312\207\313 \314 \211\203G \315P\262\316\267\202l \317 \203T \207\266\320\207\321 \203a \266\322\207\323 \203j \266\324\207\207\325\305\326\327$\266\203\203~ \266\324\207\330\305\326\327$\266\203\203\224 \331u\210\331\305O\207\332\232\203\256 `Sf\333=\203\256 \334\335!\203\256 \310u\210\336 \207\337\267\202\327 \340 \204\273 \207\212\341\331!\210\301d!\210`)\302 V\203\317 \336 \207\266\306\207\266\315\207\342\232\203\351 \334\342P!\203\351 \266\343\207\207" [ruby-endless-method-head-re forward-comment line-end-position ruby-smie--implicit-semi-p " 	" nil ";" scan-sexps -1 ruby-smie--args-separator-p " @ " smie-default-backward-token ruby-smie--before-method-name "." #s(hash-table size 5 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("unless" 77 "if" 77 "while" 77 "until" 77 "|" 88)) ruby-smie--bosp "iuwu-mod" ruby-smie--opening-pipe-p "opening-|" ruby-smie--closing-pipe-p "closing-|" "\\`[^|]+|\\'" string-match t "\\`|[*&]*\\'" 1 "" 92 looking-at "\n" ruby-smie--backward-token #s(hash-table size 2 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ("do" 180 "&." 211)) ruby-smie--redundant-do-p forward-word-strictly "def" "def="] 11])#@25 

(fn &optional OFFSET)
(defalias 'ruby-smie--indent-to-stmt #[256 "\212\300\301!\210\302\303 \206 \304\\)B\207" [smie-backward-sexp ";" column smie-indent-virtual 0] 4 (#$ . 20190)])#@16 

(fn KEYWORD)
(defalias 'ruby-smie--indent-to-stmt-p #[257 "\301=\206 \302!>\207" [ruby-align-to-stmt-keywords t intern] 3 (#$ . 20381)])#@19 

(fn KIND TOKEN)
(defalias 'ruby-smie-rules #[514 "\305\306\307B\211\310\267\2022 \207\311\312!\205\370\313\207\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336&\205\370\337!\207\211:\203\350\211\242\211\340\267\202\321\243\211\341\235\203\310 \336\232\203u \342\343\336\344\345\346\347\350\351\317&	\204u \212\352\353!\210h)\354=\204u 	\203p \355 \207\356\357 B\207\360 \205V\361 @\362=\203\204 \363\207\314\364!\203\247 \365 \204\244 \366\367\364!8\364\232\203\244 \365 \204\244 \353u\210\202\212 \370 \207\212\314\371!\205\301 \361 A@b\205\301 \342\372!\205\301 \356i\373ZB)\206V\337 \207\374\267\202\327  \207 \207 \207\211\375\267\202\337 \207\376 \203\347 \313\207\337 \207\212\314\371!\205\361 A@b\205\342\372!\205\356i\\\377\\B)\206V\314\345!\205V\337 \207\201@ !\n>\2036\201A  ?\205V\201B !\2032\355 \207\356iB\207\201C \232\203B\337!\207\211\345\232\205V?\205V\314\371!\205V\355!\207\243\211\201D \235\203\212\201E u\210\201F \363w\210l\206v\352\201E !?\205}\356iB)\207\201G \267\202\220 \207 \207 \207\211\201H \267\202\305\f\204\253\355\201I  \203\250\202\251\313!\207\314\351\363\"\205\320\201I  \205\320\207\f\203\301\207\355!\207\201C \232\205\320\337!\207\201J \267\202\346 \207 \207 \207\337!\207\363\207\211\201K \267\202\375 \207 \207 \207\337!\207\211:\205\370\211\242\211\201L \267\202\330\243\211\341\235\203\237\336\232\203F\342\343\336\344\345\346\347\350\351\317&	\204F\212\352\353!\210h)\354=\204F	\203?\355 \202E\356\357 B\202E\360 \205E\361 @\362=\203W\363\202E\314\364!\203|\365 \204w\366\367\364!8\364\232\203w\365 \204w\353u\210\202]\370 \202E\212\314\371!\205\226\361 A@b\205\226\342\372!\205\226\356i\373ZB)\206E\337 \202E\201M \267\202\266 \202E \202E \202E\211\201N \267\202\374\337 \202E\376 \203\314\313\202E\337 \202E\212\314\371!\205\355\361 A@b\205\355\342\372!\205\355\356i\\\377\\B)\206E\314\345!\205E\337 \202E\201@ !\n>\203#\201A  ?\205E\201B !\203\355 \202E\356iB\202E\201C \232\2031\337!\202E\211\345\232\205E?\205E\314\371!\205E\355!\262\202\366\243\211\201D \235\203t\212\201E u\210\201F \363w\210l\206i\352\201E !?\205p\356iB)\202\323\201O \267\202\213 \202\323 \202\323 \202\323\211\201P \267\202\310\f\204\250\355\201I  \203\243\202\244\313!\202\323\314\351\363\"\205\323\201I  \205\323\202\323\f\203\302\202\323\355!\202\323\201C \232\205\323\337!\262\202\366\201Q \267\202\365 \202\366 \202\366 \202\366\337!\202\366\363\262\207" [ruby-indent-level ruby-block-indent ruby-alignable-keywords ruby-parenless-call-arguments-indent ruby-after-operator-indent #[0 "\204 \303\304\305\"\204 \306	!\207\n\307=\204 \303\304\305\"\204& \212\310\311w\210\312i)B\207\313\n\206, \314!\207" [ruby-parenless-call-arguments-indent ruby-indent-level ruby-method-params-indent smie-rule-parent-p "def" "def=" ruby-smie--indent-to-stmt t " 	" nil column smie-rule-parent 0] 3] #[0 "\203 \301 \207\302\303 B\207" [ruby-block-indent ruby-smie--indent-to-stmt column current-indentation] 2] #[0 "\303 \203- \205> `\304\305!\3068\305\232\204 b\266\202) \211A@b\210\307 ?\266\202\204	 \310iB\207\304\305!\210	\203; \310i\n\\B\207\311\n!\207" [ruby-align-chained-calls ruby-method-call-indent ruby-indent-level smie-rule-sibling-p smie-backward-sexp "." 2 smie-rule-bolp column ruby-smie--indent-to-stmt] 4] #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data ((:elem . basic) 12 (:elem . args) 14 (:before . ";") 22)) looking-at "\\s\"" 0 smie-rule-parent-p "def" "begin" "do" "class" "module" "for" "while" "until" "unless" "if" "then" "elsif" "else" "when" "in" "rescue" "ensure" "{" smie-rule-parent #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:before 63 :after 343)) ("{" "[" "(") smie-rule-prev-p "(" "[" "," "=>" "=" "return" ";" forward-comment -1 58 ruby-smie--indent-to-stmt column current-indentation smie-rule-hanging-p smie-indent--parent t nil "." ruby-smie--bosp 2 smie-backward-sexp smie-indent-virtual " @ " "def=" 3 #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1=(:before . " @ ") 206 #2=(:before . "do") 209 #3=(:before . ".") 212)) #s(hash-table size 8 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#5="ensure" 221 #6="rescue" 221 #7="elsif" 221 #8="then" 221 #9="else" 221 #10="in" 224 #11="when" 224 #12="=" 234)) smie-rule-sibling-p -3 intern-soft ruby--at-indentation-p ruby-smie--indent-to-stmt-p #4=(:before . "iuwu-mod") ("{" "[" "(") 1 " 	" #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 391 #2# 394 #3# 397)) #s(hash-table size 39 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#13="or" 408 #14="and" 408 #15="||=" 408 #16="&&=" 408 #17=">>=" 408 #18="<<=" 408 #19="|" 408 #20="^=" 408 #21="|=" 408 #22="&=" 408 #23="**=" 408 #24="%=" 408 #25="/=" 408 #26="*=" 408 #27="-=" 408 #28="+=" 408 #29=">>" 408 #30="<<" 408 #31="!=" 408 #32="===" 408 #33="==" 408 #34="<=" 408 #35=">=" 408 #36="<" 408 #37=">" 408 #38="<=>" 408 #39="&" 408 #40="^" 408 #41="**" 408 #42="%" 408 #43="||" 408 #44="&&" 408 #45="/" 408 #46="*" 408 #47="-" 408 #48="+" 408 #49="=" 408 #50=":" 443 #51="?" 443)) smie-indent--hanging-p #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 473 #2# 476 #3# 479 #4# 482)) #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 496 #2# 499 #3# 502 #4# 505)) #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:before 524 :after 842)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 679 #2# 684 #3# 689)) #s(hash-table size 8 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#5# 702 #6# 702 #7# 702 #8# 702 #9# 702 #10# 707 #11# 707 #12# 721)) #s(hash-table size 3 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 892 #2# 897 #3# 902)) #s(hash-table size 39 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#13# 915 #14# 915 #15# 915 #16# 915 #17# 915 #18# 915 #19# 915 #20# 915 #21# 915 #22# 915 #23# 915 #24# 915 #25# 915 #26# 915 #27# 915 #28# 915 #29# 915 #30# 915 #31# 915 #32# 915 #33# 915 #34# 915 #35# 915 #36# 915 #37# 915 #38# 915 #39# 915 #40# 915 #41# 915 #42# 915 #43# 915 #44# 915 #45# 915 #46# 915 #47# 915 #48# 915 #49# 915 #50# 954 #51# 954)) #s(hash-table size 4 test equal rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (#1# 992 #2# 997 #3# 1002 #4# 1007))] 25 (#$ . 20529)])#@24 

(fn &optional POINT)
(defalias 'ruby--at-indentation-p #[256 "\212\211\204 `\262\300y\210\301\302w\210`)=\207" [0 " 	" nil] 3 (#$ . 27269)])#@71 Create an imenu index of methods inside a block.

(fn PREFIX BEG END)
(defalias 'ruby-imenu-create-index-in-block #[771 "\301\211\211\211\211\211\211b\210\302\303	\304#\203\323 \305\224\262\306\307!\262\310\225\262\306\311!\206, \306\312!\262\310\224\262\313\230\203N 	\203C 	P\262BB\262\202 \203\202 	\203r \314\315\"\203l 	\310\316O\311\301OP\202p 	P\262BB\262\317!\210\202 \320\230\203\227 	\203\257 	\310\316O\262\202\257 	\203\247 	\310\316O\321Q\262BB\262\317!\210`\262	\322\203\301 \323\202\302 \324P#\244\262b\210\202 )\207" [case-fold-search nil re-search-forward "^\\s *\\(\\(class\\s +\\|\\(class\\s *<<\\s *\\)\\|module\\s +\\)\\([^(<\n ]+\\)\\|\\(\\(?:\\(?:private\\|protected\\|public\\) +\\)?def\\|alias\\)\\s +\\([^(\n ]+\\)\\)" t 3 match-string 5 0 4 6 "alias" string-match "^self\\." -1 ruby-accurate-end-of-block "self" "::" ruby-imenu-create-index-in-block "." "#"] 14 (#$ . 27420)])#@53 Create an imenu index of all methods in the buffer.
(defalias 'ruby-imenu-create-index #[0 "\300\301e\301#\237\207" [ruby-imenu-create-index-in-block nil] 4 (#$ . 28396)])#@87 Jump to the end of the current block or END, whichever is closer.

(fn &optional END)
(defalias 'ruby-accurate-end-of-block #[256 "\301\206 d\203 \214\302 \210`}\210\303 )\207\304\305#\211\262\2052 \3068\307Y\2052 `W\2052 \202 \207" [ruby-use-smie nil back-to-indentation smie-forward-sexp apply ruby-parse-partial 2 0] 7 (#$ . 28573)])#@139 Insert a magic coding comment for ENCODING.
The style of the comment is controlled by `ruby-encoding-magic-comment-style'.

(fn ENCODING)
(defalias 'ruby--insert-coding-comment #[257 "\302\267\202 \303\202 \304\202 	\202 \305\306\"\307\261\207" [ruby-encoding-magic-comment-style ruby-custom-encoding-magic-comment-template #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (ruby 6 emacs 10 custom 14)) "# coding: %s" "# -*- coding: %s -*-" nil format "\n"] 5 (#$ . 28927)])
(defalias 'ruby--detect-encoding #[0 "\305=\203 \306\207	\206 \n\211\203 \307\310\"\206 \311\312\"\262\211\2033 \2032 \211\f\236\211\2030 \211A\207\207\207\313\207" [ruby-insert-encoding-magic-comment save-buffer-coding-system buffer-file-coding-system ruby-use-encoding-map ruby-encoding-map always-utf8 utf-8 coding-system-get mime-charset coding-system-change-eol-conversion nil ascii-8bit] 4])
(defalias 'ruby--encoding-comment-required-p #[0 "\301=\206 \302\303\304\305#\207" [ruby-insert-encoding-magic-comment always-utf8 re-search-forward "[^ -]" nil t] 4])#@70 Insert a magic comment header with the proper encoding if necessary.
(defalias 'ruby-mode-set-encoding #[0 "\212\214~\210eb\210\301 \205U eb\210\302 \211\205S \303\304!\203 \305\306!\210\303\307!\203> \310\306!\230\204L \306\224b\210`\306\225|\210\311!c\210\202L \303\312!\204L \203L \313!\210\314 \205S \315 \262*\207" [ruby-insert-encoding-magic-comment ruby--encoding-comment-required-p ruby--detect-encoding looking-at "^#!" beginning-of-line 2 "\\s *#.*\\(en\\)?coding\\s *:\\s *\\([-a-z0-9_]*\\)" match-string symbol-name "\\s *#.*coding\\s *[:=]" ruby--insert-coding-comment buffer-modified-p basic-save-buffer-1] 3 (#$ . 30029)])
(defvar ruby--electric-indent-chars '(46 41 125 93))#@13 

(fn CHAR)
(defalias 'ruby--electric-indent-p #[257 "\211>\203 \302`S!\207\303f>\203 \302`S!\207\211\304Y\203# \211\305X\204) \211\306>\205M `\212\307\303x\210\302 \205J \310\311\312	B!!\205J \313\225=\206J \313\225S=)\262\207" [ruby--electric-indent-chars ruby-block-mid-keywords ruby--at-indentation-p nil 97 122 (95 63 33 58) "[:alpha:]:_?!" looking-at regexp-opt "end" 0] 6 (#$ . 30731)])#@47 Return the indentation level of current line.
(defalias 'ruby-current-indentation #[0 "\212\300 \210\301 \210i)\207" [beginning-of-line back-to-indentation] 1 (#$ . 31137)])
(make-obsolete 'ruby-current-indentation 'current-indentation "28.1")#@75 Correct the indentation of the current Ruby line.

(fn &optional IGNORED)
(defalias 'ruby-indent-line #[256 "\300\301 !\207" [ruby-indent-to ruby-calculate-indent] 3 (#$ . 31386) nil])#@49 Indent the current line to COLUMN.

(fn COLUMN)
(defalias 'ruby-indent-to #[257 "\211\205Z \300\211\211\301W\203 \302\303!\210i\262\304 \210`\262\305 \210i\262\306\300x\210Y\2032 Z\262\2025 \301\262n\203E U\203E \307\\!\207\307!\210\211`|\210\304 \210j\210\307\\!\266\203\207" [nil 0 error "Invalid nesting" beginning-of-line back-to-indentation " 	" move-to-column] 7 (#$ . 31576)])#@225 Return t if the character before POS is a special character.
If omitted, POS defaults to the current point.
Special characters are `?', `$', `:' when preceded by whitespace,
and `\' when preceded by `?'.

(fn &optional POS)
(defalias 'ruby-special-char-p #[256 "\211\206 `\262\211\206\f `SfeW\205 S\206 `Sf\300=\206C \301=\206C \302=\203: \211?\206C \211z\303=\206C \304=\205C \211\300=\207" [63 36 58 32 92] 5 (#$ . 31985)])#@22 

(fn &optional POS)
(defalias 'ruby-verify-heredoc #[256 "\212\211\203 \211b\210\301`S!@\302>?\205, `Sf\303>?\206, \304\305!\210`Sf\306=\206, \307!?)\207" [ruby-singleton-class-re syntax-after (2 3 6 10) (32 9) forward-word-strictly -1 95 looking-at] 3 (#$ . 32426)])#@192 Check if point is possibly at the beginning of an expression.
OPTION specifies the type of the expression.
Can be one of `heredoc', `modifier', `expr-qstr', `expr-re'.

(fn &optional OPTION)
(defalias 'ruby-expr-beg #[256 "\212\306\307!\210\310\307x`n\203 \266\311\202\257 \312u\210\313\314!\2034 `\206! `Sfz\315=\204. \316 \2034 \266\307\202\257 \313!\206\255 \317=\203N \320W\205\255 \321!\266\202\202\257 \313\322!\206\255 \313\323!\203p \324=?\206\255 n\206\255 \212\312u\210\313\325!)\206\255 \313	!\205\255 \n\307x\205\255 \313\326\327\f#\330\"!\203\226 \320\225b\210\313\331!?\266\202\202\257 \332\267\202\254 \313\333!\266\202\202\257 \313\334!\266\202\202\257 \307\266\202)\207" [ruby-operator-re ruby-symbol-re ruby-symbol-chars ruby-block-beg-keywords ruby-block-op-keywords ruby-block-mid-keywords store-match-data nil " 	" t -1 looking-at "\\?" 119 ruby-special-char-p heredoc 0 ruby-verify-heredoc "[\\[({,;]" "[!?]" modifier "\\Sw$" regexp-opt append words "\\s_" #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (expr-qstr 156 expr-re 164)) "[a-zA-Z][a-zA-Z0-9_]* +%[^ 	]" "[a-zA-Z][a-zA-Z0-9_]* +/[^ 	]"] 9 (#$ . 32703)])#@604 Move forward across one balanced pair of string delimiters.
Skips escaped delimiters.  If EXPAND is non-nil, also ignores
delimiters in interpolated strings.

TERM should be a string containing either a single, self-matching
delimiter (e.g. "/"), or a pair of matching delimiters with the
close delimiter first (e.g. "][").

When non-nil, search is bounded by position END.

Throws an error if a balanced match is not found, unless NO-ERROR
is non-nil, in which case nil will be returned.

This command assumes the character after point is an opening
delimiter.

(fn TERM &optional END NO-ERROR EXPAND)
(defalias 'ruby-forward-string #[1025 "\300\301!\302\303\230\203 \304\202 \305\306Q\205 \307\310R\311#\203W \312\224\2036 \313\314\315$\202N `\206; `Sf=\203G S\202I T\211\262\316V\203W \317u\210\202 \316U\206f \203c \315\207\320\321!\207" [1 string-to-char "[^\\]\\(\\\\\\\\\\)*\\(" "^" "\\^" "[" "]" "\\|\\(#{\\)" "\\)" re-search-forward 3 ruby-forward-string "}{" nil 0 -1 error "Unterminated string"] 12 (#$ . 33895)])#@25 TODO: document.

(fn C)
(defalias 'ruby-deep-indent-paren-p #[257 "<\203 \303\"\211\203 \211A\206 	\207>\205 	\207\211=\203$ 	\207\211\304=\205+ \n\207" [ruby-deep-indent-paren ruby-deep-indent-paren-style ruby-deep-arglist assoc 40] 4 (#$ . 34950)])#@95 TODO: document throughout function body.

(fn &optional END IN-STRING NEST DEPTH PCOL INDENT)
(defalias 'ruby-parse-partial #[1536 "\204 \306\262\211\204 \306\262\307\310#\203.`\311\211\211\306\224b\210`Sf\312>\2034 \313\314!\2034 b\266\202.\313\315!\203V m\204K \316``T{\317\211$\204,`\262		b\266\202.\313\320!\203t m\204i \307\321\317#\204,`\262		b\266\202.\313\322!\203\201 b\266\202.\313\323!\203\256 m\204\246 \324\325!\203\246 \316\323\317\211$\204\251 `\262		b\266\202.b\210\266\202.\313\326!\203^m\204V\324\327!\203V\313\330!\204V\313\331!\203V\332\224b\210`Sf\333>?\262\334\332!\262\335\230\203\347 \336\262\202\337\230\203\363 \340\262\202\341\230\203\377 \342\262\202\343\230\203\344\262\202\211\203\345\230\203\345P\262\203(\316\317$\202H\211\2036\316\317\211$\202H\307\345\230\203A\346\202D\347P\317#\204Y`\262		b\266\202.b\210\266\202.\313\350!\203~\324 \203w\313\351!\203w\306\225b\266\202.b\266\202.\313\352!\203\216b\210\332u\266\202.\313\353!\203\236\332y\210`b\266\202.\313\354!\203\271`fBB\262T\262b\266\202.\313\355!\203\320S\262A\262b\266\202.\313	!\203n\204\355\356u\210`f\262\357=\204\360=\204b\210`f\262\357=\204\361=\204\362=\204A\262S\262b\266\202.\313\363!\203@n\204+\356u\210`f\357=\2048\311BB\262T\262\306\225b\266\202.\313\364\n\365Q!\203\272\366 \367\370\"\216\313\371!?\206`\212\372 \210\313!)?)\262\203\263n\204}\356u\210`f\262\357=\204\263\360=\204\263b\203\263`f\361=\204\263\373\311w\203\263\306\224b\203\263\313\f!\203\241\324\374!\203\263b\203\263\311BB\262T\262b\266\202.\313\375!\203\321\332\224b\210\316\334\332!\317#\266\202.\313\376!\203\337\306\225b\266\202.\313\377!\203\355\306\225b\266\202.\313\201A !\204\313\201B !\204\313\201C !\204\313\201D !\203\306\225b\266\202.\313\201E !\203;\307\201F \317#\203/\332y\266\202.\306\225\262		b\266\202.\313\201G !\203\342\324\201H !\203\333\313\201I !\203\333\201J \334\201K !\206c\334\201L !!\262\332\224\203r\201M P\262\306\225b\201N  \n\n\n\n\n\257`V\203\232\201O \201P #\211\262\204\205\211@\262\f\211A@\262\201L 8\262\n\201Q 8\262	\201K 8\262\307\201R \201S Q\310#\203\320\332y\266\202.\262\f\fb\266\202.b\266\202.\313\201T !\203\361b\266\202.\313!\203 \201U \201@ !\203 \307\201V  @\317#\203\332y\266\202.\306\225\262	@b\266\202.\201W \201X `{\"\210\266F\207" [ruby-delimiter ruby-block-end-re ruby-block-beg-re ruby-non-block-do-re ruby-modifier-re ruby-here-doc-beg-re 0 re-search-forward move nil (64 36) looking-at "\\sw" "[\"`]" ruby-forward-string t "'" "[^\\]\\(\\\\\\\\\\)*'" "/=" "/" ruby-expr-beg expr-re "%" expr-qstr "%=" "%[QqrxWw]?\\([^a-zA-Z0-9 	\n]\\)" 1 (113 119) match-string "[" "][" "{" "}{" "(" ")(" "<" "><" "\\" "\\\\[^\\]*\\\\" "[^\\]\\(\\\\\\\\\\)*" "\\?" "\\?\\(\\\\C-\\|\\\\M-\\)*\\\\?." "\\$" "#" "[\\[{(]" "[])}]" -1 95 46 33 63 "def\\s +[^(\n;]*" "\\_<\\(" "\\)\\_>" match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] "do\\_>" back-to-indentation " 	" modifier ":\\(['\"]\\)" ":\\([-,.+*/%&|^~<>]=?\\|===?\\|<=>\\|![~=]?\\)" ":\\([a-zA-Z_][a-zA-Z_0-9]*[!?=]?\\)?" ruby-indent-point "\\.\\.\\.?" "\\.[0-9]+" "\\.[a-zA-Z_0-9]+" "\\." "^=begin" "^=end" "<<" heredoc "<<\\([-~]\\)?\\(\\([\"'`]\\)\\([^\n]+?\\)\\3\\|\\(?:\\sw\\|\\s_\\)+\\)" regexp-quote 4 2 "\\s *" line-end-position apply ruby-parse-partial 3 "^" "$" "^__END__$" boundp ruby-here-doc-end-match error "Bad string %s"] 17 (#$ . 35216)])#@33 TODO: document.

(fn START END)
(defalias 'ruby-parse-region #[514 "\300\212\203\f b\210\202 \301 \210\214`}\210`V\203% \302\303#\211\262\204 *\211@A@@\3048\3058@@F\207" [nil ruby-beginning-of-indent apply ruby-parse-partial 2 3] 8 (#$ . 38858)])#@84 Return the indentation level in spaces NEST levels deeper than POS.

(fn POS NEST)
(defalias 'ruby-indent-size #[514 "\206 \301_\\\207" [ruby-indent-level 1] 5 (#$ . 39122)])#@86 Return the proper indentation level of the current line.

(fn &optional PARSE-START)
(defalias 'ruby-calculate-indent #[256 "\212\306 \210`\307\211\211\211\211\310\311!\210\307f\205 \312\307f!\313\203' b\210\202- \314 \210`\262	\315 \210i\262\316		\"\262@\203F \307\262\202~A@@\203\fA@A\211\262b\210\317A@@!\211\203\313 \211\320=\203| A@@=\203| \321\311!\210iS\262\202\353 \316`\n\"\3228\205\230 \3228\313V\205\230 \211A@Ab\206\230 \320\262\203\255 \323\324!\210\325i\322	8\"\262\202\353 i\262\211\326=\204\353 \203\301 S\262\202\353 \325S\327\"\262\202\353 \3308\203\333 \3308b\210\202\342 	b\210\315 \210\325i\322	8\"\262A@@=\203\317\312!!\203\331\332!!\203i\262\210\202~\3228\203e\3228\313V\203eA@A\204'\333\334!\210A@Ab\210\323\324!\210`\262\335\336!\203]\3308\203J\3308b\210\202Qb\210\315 \210\325i\3228\"\262\202~i	\\\262\202~\3228\203~\3228\313W\203~\325i\3228\"\262\211\203.b\210\307\210`\262\306 \210\317!\204\256\337\n\320#\203\256\313\225f\340=\204.\211	Z\262\202.\212\306 \210o)\204.\317\320!\204\304A@@\204.\307\211\211\204\350\341\307x\210`\262\306 \210\337\342\320#\203\342\306 \210\202\306\320\262\202\306\266\307\210\343\307x\210\307`\306 \210\337\344\320#\203`S\262\345!\204\316\"\211\262	\203@\203\307\262\202\366\206$\211b\210\343\307x\210\2038@\2038\211\202=A@A\262\316`\"\262\266o\204O\324u\210\335!\203y\f\307x\203y\335\346\347Q!\203y`\3308=\204y\212\313\225b\210\335\350!)\203\365\335/!\203.\345 \204.\212\324u\210\335/!?\206\227`Sf\351=?)\203.`f\316\206\244\n`\"@?\205\360`f\352=\203\345\212l\204\272\324u\210\331\353\307\320#\203\340\341\307x\210l?\205\341\324u\210\335\354!?\205\341\323\324!\210\335\336!?\202\341\320)\205\360\211\355=?\205\360\320\211\262\262\203.\204\335\346\347Q!\204\317\320!\326=\203o\204\206b\210\310\311!\210i\202,A@@\203)\211\202,\211	\\\262b\210\306 \210\310\311!\210\335\356!\203E\211	\\\202F\211)\266\210)\207" [case-fold-search ruby-indent-level ruby-negative ruby-symbol-re ruby-symbol-chars ruby-block-hanging-re beginning-of-line nil skip-syntax-forward " " matching-paren 0 ruby-beginning-of-indent back-to-indentation ruby-parse-region ruby-deep-indent-paren-p t skip-syntax-backward 2 forward-word-strictly -1 ruby-indent-size space 1 3 search-backward char-to-string error "Invalid nesting" looking-at "do\\>[^_]" re-search-forward 95 " 	\n" "^\\s *#" " 	" "#" ruby-special-char-p "\\<\\(" "\\)\\>" "[a-z_]" 58 124 "|" "{" 44 "\\.[^.]\\|&\\." ruby-operator-re] 15 (#$ . 39306)])#@149 Move backward to the beginning of the current defun.
With ARG, move backward multiple defuns.  Negative ARG means
move forward.

(fn &optional ARG)
(defalias 'ruby-beginning-of-defun #[256 "\302\303\304	\305Q\302\306\206 \307$\205 \310 \210\306)\207" [case-fold-search ruby-defun-beg-re nil re-search-backward "^\\s *" "\\_>" t 1 beginning-of-line] 6 (#$ . 41959) "p"])#@129 Move point to the end of the current defun.
The defun begins at or after the point.  This function is called
by `end-of-defun'.
(defalias 'ruby-end-of-defun #[0 "\302 \210\303\304\305	P\306 \"\205 \307y)\207" [case-fold-search ruby-block-end-re ruby-forward-sexp nil looking-back "^\\s *" line-beginning-position 1] 3 (#$ . 42339) "p"])#@105 Backtrack to a line which can be used as a reference for
calculating indentation on the lines after it.
(defalias 'ruby-beginning-of-indent #[0 "\301\302\303#\205 \304\305!\204  \306 \205 \202  \207" [ruby-indent-beg-re re-search-backward nil move ruby-in-ppss-context-p anything beginning-of-line] 4 (#$ . 42684)])#@140 Move to the beginning (N < 0) or the end (N > 0) of the
current block, a sibling block, or an outer block.  Do that (abs N) times.

(fn N)
(defalias 'ruby-move-to-block #[257 "\304 \210\211\305V\203 \306\202 \307\305W\310\311`\312 \"8\206 \305\313\211\211\314	!\203- \\\262_\305W\2039 \305\262\315!\305\211W\203\313\211\262\212\304 \210\316\203V \n\202Z \317\320Q\312 \321#\205f \322\323 8?)\262\204\203v o\202w m\204y\210\314\324!\204i \314\325!\204i \204\234 \314\326!\203\234 \316\327!\210\202i \203\256 \314\327!\203\256 \330\326!\210\202i \331\332!\203\314 \322\323 8b\210\204i \333 \210n\203i \307u\210\202i \311`\312 \"\211@\204\336 \3108\\\262\210_\305V\203\357 \321\262\202i \203 \305U\203 \321\262\202i _\305W\203i \321\262\202i \210\211T\262\202> \266\304 )\207" [case-fold-search ruby-block-mid-re ruby-block-end-re ruby-block-beg-re back-to-indentation 0 1 -1 2 ruby-parse-region line-end-position nil looking-at abs re-search-forward "\\_<\\(" "\\)\\_>" t 8 syntax-ppss "^\\s *$" "^\\s *#" "^=begin\\>" "^=end\\>" re-search-backward ruby-in-ppss-context-p string forward-sexp] 14 (#$ . 43009)])#@109 Move backward to the beginning of the current block.
With ARG, move up multiple blocks.

(fn &optional ARG)
(defalias 'ruby-beginning-of-block #[256 "\300\206 \301[!\207" [ruby-move-to-block 1] 3 (#$ . 44185) "p"])#@106 Move forward to the end of the current block.
With ARG, move out of multiple blocks.

(fn &optional ARG)
(defalias 'ruby-end-of-block #[256 "\300\206 \301!\207" [ruby-move-to-block 1] 3 (#$ . 44408) "p"])#@136 Move forward across one balanced expression (sexp).
With ARG, do it many times.  Negative ARG means move backward.

(fn &optional ARG)
(defalias 'ruby-forward-sexp #[256 "\203 \302!\207\211\247\203 \211\303W\203 \304[!\207\211\206 \305\3061\343 \211\303V\205\340 \307\310!\210\311\312!\2035 \303\225b\210\311\313!\203B \303\225b\210\202\331 \314\315w\210\311\316!\203U \317`\305\"b\210\202\331 \311\320	\321Q!\203\200 `\206c `Sf\322=\204\200 `\206o `Sf\323=\204\200 \324 \210\325\305!\210\202\331 \311\326!\203\260 \325\305!\210\311\327!\204\206 \311\330!\203\234 \331u\210\202\206 \332\315w\303V\204\206 \311\333!\203\331 \305u\210\202\331 \315\211\211\206\276 \334 \206\276 \311\335!\262\336\337\315#\211\262A@\203\327 \340\262\341\315w\210\202\262 \266\211S\262\202! 0\210\207\210\325\305!\210\207" [ruby-use-smie ruby-block-beg-re forward-sexp 0 ruby-backward-sexp 1 (error) skip-syntax-forward " " looking-at ",\\s *" "\\?\\(\\\\[CM]-\\)*\\\\?\\S " "-,.:;|&^~=!?+*" nil "\\s(" scan-sexps "\\<\\(" "\\)\\>" 46 58 ruby-end-of-block forward-word-strictly "\\(\\$\\|@@?\\)?\\sw" "_" "::" 2 "." "\\?\\|!\\(=[~=>]\\|[^~=]\\)" ruby-expr-beg "%\\sw?\\Sw\\|[\"'`/]" apply ruby-parse-partial t "<"] 8 (#$ . 44621) "p"])
(make-obsolete 'ruby-forward-sexp 'forward-sexp "28.1")#@136 Move backward across one balanced expression (sexp).
With ARG, do it many times.  Negative ARG means move forward.

(fn &optional ARG)
(defalias 'ruby-backward-sexp #[256 "\203 \302!\207\211\247\203 \211\303W\203 \304[!\207\211\206 \305\3061\360 \211\303V\205\355 \307\310x\210\311u\210\312\313!\203d \314`T\311\"b\210`Sf\211\315\267\210\202\346 \311u\266\202\346 `S\206R `Sf\316=\203` \317u\266\202\346 \210\202\346 \312\320!\203\211 \321\303\225\206q `Sf!\322!\203\205 \323\324\310x\305\"\305=\204t \210\202\346 \312\325!\203\232 \326 \203\346 \311u\210\202\346 \312\327!\204\346 \305u\210\330\311!\210`Sf\211\331\267\202\327 \332\202\330 \311u\210\332\202\330 \311u\210`Sf\310f=\205\330 \311u\202\330 \311u\210`Sf\333=\202\330 \310\262\204\243 \312	!\203\346 \334 \210\211S\262\202! 0\210\207\210\207\210\207" [ruby-use-smie ruby-block-end-re backward-sexp 0 ruby-forward-sexp 1 (error) "- 	\n,.:;|&^~=!?+*" nil -1 looking-at "\\s)" scan-sexps #s(hash-table size 7 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (37 69 120 76 114 76 87 76 119 76 81 76 113 76)) 37 -2 "\\s\"\\|\\\\\\S_" char-to-string search-backward logand "\\\\" "\\s.\\|\\s\\" ruby-special-char-p "\\s(" forward-word-strictly #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (95 176 46 180 64 187 36 187 58 204)) t : ruby-beginning-of-block] 6 (#$ . 45911) "p"])
(make-obsolete 'ruby-backward-sexp 'backward-sexp "28.1")#@90 Indent each line in the balanced expression following the point.

(fn &optional IGNORED)
(defalias 'ruby-indent-exp #[256 "\300 \301\211\211\302\303\302\"\210\304\305\"\216\306 \210`\262\307 \262m?\205N \310!\262V\2032 \302\211\262\202@ U\205N \211\205N \301\262\302\205N \311!\210\306\312!\210\202 )\207" [point-marker nil t set-marker-insertion-type make-closure #[0 "\300b\210\300\301\211\223\207" [V0 nil] 3] beginning-of-line current-indentation ruby-calculate-indent ruby-indent-to 2] 9 (#$ . 47374) "*P"])#@190 Return the current method name as a string.
This string includes all namespaces.

For example:

  #exit
  String#gsub
  Net::HTTP#active?
  File.open

See `add-log-current-defun-function'.
(defalias 'ruby-add-log-current-method #[0 "\212\302 \303\211`\304\211\305\"\306!\3072L \310\303\305#\205K \311\312!\313\230\203/ \314S!\204= \211\262\202D \247\203= \315 V\203D \316\307\305\"\202E \305\205K \202 0\203o \312\224b\210\311\312!\313\230\204d \311\317!C\262\202i \311\317!\262i\262\320 \210\203\236 \321V\203\236 \310\303\305#\203\236 \312\224b\210iW\203o \311\317!B\262i\262\320 \210\202o \203\322\323\"\211A\203\364 \211@\324\230\204\350 \325!\211\203\322 \211@@\230\203\313 \211A\237\262\303\262\211A\262\202\267 \210\203\343 \326!\327!\241\210\202\350 \327!\262\330\326!@P\262\210\202\331	\305#\205\321\224b\210\314!\211\203\f\330\202\332P\262\266:\203!\333\334\335#\262\2038\2032P\266\207\202;\266\207\202;\266\207)\207" [ruby-defun-beg-re ruby-singleton-class-re ruby--add-log-current-indent nil #[513 "\302\303\304\203 	\202 \305\306\260\207" [ruby-symbol-re ruby-operator-re "^[ 	]*" "[ 	]+\\(\\([A-Za-z_]" "*[?!]?\\|" "\\." "\\|::\\)+\\)"] 9 "\n\n(fn RE &optional METHOD-NAME?)"] t "\\(class\\|module\\)" found re-search-backward match-string 1 "def" ruby-block-contains-point current-indentation throw 2 beginning-of-line 0 split-string "\\.\\|::" "self" reverse last butlast "." re-search-forward "#" mapconcat identity "::"] 12 (#$ . 47908)])#@11 

(fn PT)
(defalias 'ruby-block-contains-point #[257 "\212\300 \301\302\"\216\303 \210`V*\207" [match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] ruby-forward-sexp] 5 (#$ . 49448)])
(defalias 'ruby--add-log-current-indent #[0 "\212\301 \210\302\303!\203 \304 \202 \203 \305 \202 \306 )\207" [ruby-use-smie back-to-indentation looking-at "[[:graph:]]" current-indentation smie-indent-calculate ruby-calculate-indent] 2])#@17 

(fn ORIG END)
(defalias 'ruby-brace-to-do-end #[514 "\300\211b\210`Sf\301=\205\202 \302\303!\210\212\304\300x\211\305W\203  \302[!\210\210n)\204) \306c\210\307c\210\310 \262m\204? \300fz\311=\203? \312c\210b\210\302\313!\210`Sfz\311=\203R \312c\210\314c\210\310 \262\315\316!\203p \313\224\204g \312c\210\305\225Tb\210\317\320!\210\315\321!\204y \306c\210\322\"\210b\210\323\207" [nil 125 delete-char -1 " 	" 0 "\n" "end" point-marker 119 " " 1 "do" looking-at "\\(\\s \\)*|" search-forward "|" "\\s *$" indent-region t] 7 (#$ . 49904)])#@17 

(fn ORIG END)
(defalias 'ruby-do-end-to-brace #[514 "\303\211\211\211\304Zb\210\305!\205\211 \306\304!\210\307 \262\310c\210b\210\306\311!\210\312c\210\305\313!\203G \314	\2033 \315\2024 \316!\210\307 \262\303u\210\317\320\321 \322#\210\202K \307 \262\212\323\303w\210`\262b\210\323\303x\210`)\262\211W\204z \324!\324!U\203\205 iZ\\\311\\\nW\203\205 \314\325!\210b\210\314\325!\210b\210\322\207" [ruby-block-end-re ruby-toggle-block-space-before-parameters fill-column nil 3 looking-at delete-char point-marker "}" 2 "{" "\\s +|" just-one-space 1 0 re-search-forward "|" line-end-position t " 	\n" line-number-at-pos -1] 10 (#$ . 50457)])#@188 Toggle block type from do-end to braces or back.
The block must begin on the current line or above it and end after the point.
If the result is do-end block, it will always be multiline.
(defalias 'ruby-toggle-block #[0 "`\302\211\211\210\303\304!\205E \205 	:\305\224\206 \306\224b\210`\262\307 \310\311\"\216\312 )\266`\262\211V)\205E \305\224\203A \313\"\202E \314\"?\205K b\207" [ruby-use-smie smie-grammar nil re-search-backward "\\(?:[^#]\\)\\({\\)\\|\\(\\_<do\\_>\\)" 1 2 match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] ruby-forward-sexp ruby-brace-to-do-end ruby-do-end-to-brace] 7 (#$ . 51121) nil])#@36 Return region for string at point.
(defalias 'ruby--string-region #[0 "\300 \3018\302>\205 \212\3038b\210\304 \210\3038`)D\207" [syntax-ppss 3 (39 34) 8 forward-sexp] 3 (#$ . 51776)])#@40 Check if cursor is at a string or not.
(defalias 'ruby-string-at-point-p #[0 "\300 \207" [ruby--string-region] 1 (#$ . 51969)])#@69 Get the inverse string quoting for STRING-QUOTE.

(fn STRING-QUOTE)
(defalias 'ruby--inverse-string-quote #[257 "\211\300\232\203 \301\207\300\207" ["\"" "'"] 3 (#$ . 52102)])#@58 Toggle string literal quoting between single and double.
(defalias 'ruby-toggle-string-quotes #[0 "\300 \205L \301 \211@A@\302\303\211T\"!\303TS\"\304\232\203, \305\306\307\310\311\312##\2026 \305\313\304\310\314\315##\262`|\210\316\317$c\210\211b\262\266\205\207" [ruby-string-at-point-p ruby--string-region ruby--inverse-string-quote buffer-substring-no-properties "'" string-replace "\\\"" "\"" replace-regexp-in-string "\\(\\`\\|[^\\]\\)'" "\\1\\\\'" "\\'" "\\(\\`\\|[^\\]\\)\"" "\\1\\\\\"" format "%s%s%s"] 12 (#$ . 52284) nil])#@350 Visit a library file denoted by FEATURE-NAME.
FEATURE-NAME is a relative file name, file extension is optional.
This commands delegates to `gem which', which searches both
installed gems and the standard library.  When called
interactively, defaults to the feature name in the `require'
or `gem' statement around point.

(fn &optional FEATURE-NAME)
(defalias 'ruby-find-library-file #[256 "\211\204 \212\300y\210\301\302!\205 \303\304!)\305\306\"\266\202\307\310\311!P!\300\312O\313\314\315\316$\266\203\2035 \317\320\"\207\321!\207" [0 looking-at "\\(?:require\\| *gem\\) [\"']\\(.*?\\)[\"']" match-string 1 read-string "Feature name: " shell-command-to-string "gem which " shell-quote-argument -1 "\\`ERROR" nil string-match t user-error "%s" find-file] 10 (#$ . 52841) nil])#@51 Regexp to match the beginning of percent literal.
(defconst ruby-percent-literal-beg-re "\\(%\\)[qQrswWxIi]?\\([[:punct:]]\\)" (#$ . 53634))#@118 Methods that can take regexp as the first argument.
It will be properly highlighted even when the call omits parens.
(defconst ruby-syntax-methods-before-regexp '("gsub" "gsub!" "sub" "sub!" "scan" "split" "split!" "index" "match" "assert_match" "Given" "Then" "When") (#$ . 53781))#@68 Regexp to match text that can be followed by a regular expression.
(defvar ruby-syntax-before-regexp-re (byte-code "\301\302\303\"\304Q\207" [ruby-syntax-methods-before-regexp "\\(^\\|[[{|=(,~;<>!]\\|[?:] \\|\\(?:^\\|\\s \\)\\(?:&&\\|and\\|elsif\\|if\\|not\\|or\\|un\\(?:less\\|til\\)\\|wh\\(?:en\\|ile\\)\\|||\\)\\|\\_<" regexp-opt t "\\)\\s *"] 4) (#$ . 54069))#@86 Syntactic keywords for Ruby mode.  See `syntax-propertize-function'.

(fn START END)
(defalias 'ruby-syntax-propertize #[514 "\303b\210\304\305#\210\306!\210\307!\210`\211b\210`W\205\255\310\311\312#\205\255\313\224\203[ \313\224\313\225\212\314\315\316\224!8)\203A \313\225b\210\303\202K \317\313\225\316\225\320\321$\210\322\211\203V \317\320$\210\266\202 \323\224\203\237 \324\325!\211A\326\233\241\210\327!\266\313\224\313\225\330\315\313\224!8\206\206 \316\224\206\202 `Sf\331=?\205\217 \316\225b\210\321\211\203\232 \317\320$\210\266\202 \326\224\203\345 \324\325!\211A\330\233\241\210\327!\266\313\224\313\225\330\315 8\206\320 \316\224\206\304 `Sf\331=\206\320 \314\225f\332=?\205\325 \321\211\203\340 \317\320$\210\266\202 \333\224\203+\324\325!\211A\334\233\241\210\327!\266\316\224\316\225\212\330\315\316\224!8\206\303\335\336!\316U)\206h\337>)?\205\321\211\203&\317\320$\210\266\202 \340\224\203<\317\340\224\340\225\320\321$\210\202 \341\224\203e\324\325!\211A\342\233\241\210\327!\266\313\224\313\225\343\211\203`\317\320$\210\266\202 \330\224\203\334\324\325!\211A\344\233\241\210\327!\266\313\224\313\225\212\345u\210\346\347\303x!)\205\314\212\315\313\224!)\303\3308\204\301\212\303f\350=\206\252`S\206\245`Sf\350=?\262\345u\210\351\n\352 \")\203\301\211\203\311\323\224\203\311\3148\353=\205\312\354\266\202\211\203\327\317\320$\210\266\202 \355\224\203\324\325!\211A\356\233\241\210\327!\266\212\316\224b\210\346\347\303x!)\203\357 \210\202 \313\224b\210\202 \360\224\203\317\360\224\360\225\320\361$\210\202 \342\224\203-\317\342\224\342\225\320\361$\210\202 \362\224\203t\324\325!\211A\363\233\241\210\327!\266\341\224\341\225\330\212\315\316\224!)8?\205d\364\316\224!\205d\317\341\224\341\225\320\365$\210\306!\211\203o\317\320$\210\266\202 \366\224\203 \324\325!\211A\367\233\241\210\327!\266\313\224\313\225\330\212\315\313\224!)8?\205\235\370!\210\371\211\203\250\317\320$\210\266\202 )\207" [case-fold-search parse-sexp-lookup-properties ruby-syntax-before-regexp-re nil remove-text-properties (ruby-expansion-match-data nil) ruby-syntax-propertize-heredoc ruby-syntax-enclosing-percent-literal re-search-forward "\\([?$]\\)[#\"'`:?]\\|:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\)\\|:[[:alpha:]][[:alnum:]_]*\\(=\\)\\|\\([!?]\\)\\|^[ 	]*def +\\(`\\)\\|\\(:\\)\\(?:[({]\\|\\[[^]]\\)\\|\\(/\\)\\|\\(#\\({[^}\n\\]*\\(\\\\.[^}\n\\]*\\)*}\\|\\(?:\\$\\|@\\|@@\\)\\(\\w\\|_\\)+\\|\\$[^a-zA-Z \n]\\)\\)\\|^=en\\(d\\)\\_>\\|^\\(=\\)begin\\_>\\|\\(<\\)<\\([~-]\\)?\\(\\([a-zA-Z0-9_]+\\)\\|[\"]\\([^\"]+\\)[\"]\\|[']\\([^']+\\)[']\\).*\\(\n\\)\\|\\(?:^\\|[[ 	\n<+(,=*]\\)\\(%\\)[qQrswWxIi]?\\([[:punct:]]\\)" t 1 3 syntax-ppss 0 put-text-property syntax-table (3) (6) 2 match-data ints 4 set-match-data 8 58 62 5 12 skip-syntax-backward "w_" (64 36) 6 7 14 (1) 16 -1 cl-evenp "\\\\" 32 looking-back line-beginning-position 47 (7 . 47) 9 20 ruby-syntax-propertize-expansion 13 (14) 21 30 ruby-verify-heredoc (7) 22 44 ruby-syntax-propertize-percent-literal (15)] 11 (#$ . 54439)])
(byte-code "\300\301\302\303#\210\304\301\302\305#\207" [defalias ruby-syntax-propertize-function ruby-syntax-propertize nil make-obsolete "25.1"] 4)#@14 

(fn LIMIT)
(defalias 'ruby-syntax-propertize-heredoc #[257 "\301 \302\3038\304=\205` \212\3058b\210\306 \210\307\310 \311#\203/ \312\313\224!\203 \314 \315PB\262\202 )\212\211A\203? \3058b\210\211\237\262\211\205_ \307\211A\262\242\316#\205_ \211\204? \317`S`\320\321$\210\202? )\207" [ruby-here-doc-beg-re syntax-ppss nil 3 10 8 beginning-of-line re-search-forward line-end-position t ruby-verify-heredoc 0 ruby-here-doc-end-match "\n" move put-text-property syntax-table (7)] 8 (#$ . 57760)])#@14 

(fn LIMIT)
(defalias 'ruby-syntax-enclosing-percent-literal #[257 "\301 `\3028\303=\205\" \3048b\210\305!\203 \306!\210`W\205\" \211b\207" [ruby-percent-literal-beg-re syntax-ppss 3 t 8 looking-at ruby-syntax-propertize-percent-literal] 5 (#$ . 58274)])#@14 

(fn LIMIT)
(defalias 'ruby-syntax-propertize-percent-literal #[257 "\301\224b\210\302f\303!\304 HA\206 \305\306\"A\302\212\3071k \211\203V \304 p\310\311#\216\312\313\304\302\"!\210\314\315\303!P\"\210\314\316P\"\210\314\317\320\"\210\214`}\210\321 *\266\202` \322\323\324!P\302#\210\325`S`\304\326$0\202m \210\302*\207" [parse-sexp-lookup-properties 2 nil char-to-string syntax-table assoc ((60 . 62)) (scan-error search-failed) make-closure #[0 "r\300q\210\302\301!)\207" [V0 V1 set-syntax-table] 2] set-syntax-table make-char-table modify-syntax-entry "(" ")" 92 "\\" forward-list re-search-forward "[^\\]\\(?:\\\\\\\\\\)*" regexp-quote put-text-property (15)] 11 (#$ . 58541)])
(defalias 'ruby-syntax-propertize-expansion #[0 "\300\224\300\225\205 \212\301!)\302!\2053 \303\211T\304\305 $\210b\210\306\307\310#\2053 \303\300\224\300\225\311\312$\210\202 \207" [0 syntax-ppss ruby-syntax-expansion-allowed-p put-text-property ruby-expansion-match-data match-data re-search-forward "[\"`]" move syntax-table (1)] 8])#@70 Return non-nil if expression expansion is allowed.

(fn PARSE-STATE)
(defalias 'ruby-syntax-expansion-allowed-p #[257 "\3008\211\301>\206\" \211\302=\205\" \303 \304\305\"\216\212\3068b\210\307\310!*\262\207" [3 (34 96 10 47) t match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] 8 looking-at "%\\(?:[QWrxI]\\|\\W\\)"] 6 (#$ . 59593)])#@18 

(fn START END)
(defalias 'ruby-syntax-propertize-expansions #[514 "\212b\210\301\302#\205 \303 \210\202 )\207" [ruby-expression-expansion-re re-search-forward move ruby-syntax-propertize-expansion] 6 (#$ . 59960)])#@31 

(fn CONTEXT &optional PPSS)
(defalias 'ruby-in-ppss-context-p #[513 "\211\206 \300`!\301\267\202: \3028\206> \3038\202> \3028\202> \3028\304=\202> \305\306!\205> \305\307!?\202> \3038\202> \310\311\"??\207" [syntax-ppss #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (anything 13 string 25 heredoc 31 non-heredoc 39 comment 52)) 3 4 10 ruby-in-ppss-context-p anything heredoc error "Internal error on `ruby-in-ppss-context-p': context name `%s' is unknown"] 6 (#$ . 60187)])
(defconst ruby-font-lock-keyword-beg-re "\\(?:^\\|[^.@$:]\\|\\.\\.\\)")#@51 Additional expressions to highlight in Ruby mode.
(defconst ruby-font-lock-keywords (byte-code "\304\305P\306B\307	\310\"P\311B\307\n\310\"P\312B\313B\314\315P\316B\317\320\321\322B\323\324\325\326P\327B\330BBBBBBBBBBBBBB\207" [ruby-font-lock-keyword-beg-re ruby-builtin-methods-with-reqs ruby-builtin-methods-no-reqs ruby-here-doc-beg-re ("^\\s *def\\s +\\(?:[^( 	\n.]*\\.\\)?\\([^( 	\n]+\\)" 1 font-lock-function-name-face) "\\_<\\(a\\(?:lias\\|nd\\)\\|b\\(?:egin\\|reak\\)\\|c\\(?:ase\\|lass\\)\\|d\\(?:ef\\(?:ined\\?\\)?\\|o\\)\\|e\\(?:ls\\(?:e\\|if\\)\\|n\\(?:d\\|sure\\)\\)\\|f\\(?:ail\\|or\\)\\|i[fn]\\|module\\|n\\(?:\\(?:ex\\|o\\)t\\)\\|or\\|re\\(?:do\\|scue\\|t\\(?:ry\\|urn\\)\\)\\|s\\(?:elf\\|uper\\)\\|then\\|un\\(?:def\\|less\\|til\\)\\|wh\\(?:en\\|ile\\)\\|yield\\)\\_>" ((1 font-lock-keyword-face)) regexp-opt symbols ((1 (unless (looking-at " *\\(?:[]|,.)}=]\\|$\\)") font-lock-builtin-face))) ((1 font-lock-builtin-face)) ((0 (when (ruby-verify-heredoc (match-beginning 0)) 'font-lock-string-face))) "\\_<\\(?:BEGIN\\|END\\)\\_>\\|^__END__$" "\\_<\\(nil\\|true\\|false\\)\\_>" (1 font-lock-constant-face) ("\\_<__\\(?:LINE\\|ENCODING\\|FILE\\)__\\_>" (0 font-lock-builtin-face)) ("\\(^\\|[^:]\\)\\(:@\\{0,2\\}\\(?:\\sw\\|\\s_\\)+\\)" (2 font-lock-constant-face)) "\\$\\(?:[:\"!@;,/._><\\$?~=*&`'+0-9]\\|-[0adFiIlpvw]\\|\\(?:ARGV\\|C\\(?:HILD_STATUS\\|LASSPATH\\)\\|DE\\(?:BUG\\|FAULT_\\(?:\\(?:IN\\|OUT\\)PUT\\)\\)\\|E\\(?:NV_JAVA\\|RROR_\\(?:INFO\\|POSITION\\)\\)\\|F\\(?:I\\(?:ELD_SEPARATOR\\|LENAME\\)\\|S\\)\\|I\\(?:GNORECASE\\|NPUT_\\(?:\\(?:LINE_NUMBE\\|RECORD_SEPARATO\\)R\\)\\)\\|JRUBY_\\(?:\\(?:REVI\\|VER\\)SION\\)\\|L\\(?:AST_\\(?:MATCH_INFO\\|PAREN_MATCH\\|READ_LINE\\)\\|OAD\\(?:ED_FEATURES\\|_PATH\\)\\)\\|MATCH\\|NR\\|O\\(?:FS\\|RS\\|UTPUT_\\(?:\\(?:FIEL\\|RECOR\\)D_SEPARATOR\\)\\)\\|P\\(?:ID\\|OSTMATCH\\|R\\(?:EMATCH\\|O\\(?:CESS_ID\\|GRAM_NAME\\)\\)\\)\\|RS\\|SAFE\\|VERBOSE\\|std\\(?:err\\|in\\|out\\)\\)\\_>\\)" (0 font-lock-builtin-face) ("\\(\\$\\|@\\|@@\\)\\(\\w\\|_\\)+" 0 font-lock-variable-name-face) ("\\_<\\([A-Z]+\\(\\w\\|_\\)*\\)" 1 (unless (eq 40 (char-after)) font-lock-type-face)) ("\\(?:^\\s *\\|[[{(,]\\s *\\|\\sw\\s +\\)\\(\\(\\sw\\|_\\)+:\\)[^:]" (1 (progn (forward-char -1) font-lock-constant-face))) "\\_<\\(Array\\|Complex\\|Float\\|Hash\\|Integer\\|Rational\\|String\\)\\_>" ((1 font-lock-builtin-face)) ((ruby-match-expression-expansion 0 font-lock-variable-name-face t) ("\\(?:^\\|[^[:alnum:]_]\\)\\(!+\\)[^=~]" 1 font-lock-negation-char-face) ("\\?\\\\?\\_<.\\_>" 0 font-lock-string-face) ("\\(?:\\s|\\|/\\)\\([imxo]+\\)" 1 (when (save-excursion (let ((state (syntax-ppss (match-beginning 0)))) (and (nth 3 state) (or (eq (char-after) 47) (progn (goto-char (nth 8 state)) (looking-at "%r")))))) font-lock-preprocessor-face)))] 15) (#$ . 60787))#@14 

(fn LIMIT)
(defalias 'ruby-match-expression-expansion #[257 "\300`\301\302$\302\205' `V\205' b\210\303\301\"\211\262\203$ \304!\210\305\207\306!\207" [next-single-char-property-change ruby-expansion-match-data nil get-text-property set-match-data t ruby-match-expression-expansion] 6 (#$ . 63606)])
(defvar ruby--flymake-proc nil nil)
(make-variable-buffer-local 'ruby--flymake-proc)#@60 `ruby -wc' backend for Flymake.

(fn REPORT-FN &rest ARGS)
(defalias 'ruby-flymake-simple #[385 "\300\301!\204\n \302\303!\210\304\305\306\307\310\"#\207" [executable-find "ruby" error "Cannot find the ruby executable" ruby-flymake--helper "ruby-flymake" ("ruby" "-w" "-c") make-closure #[514 "eb\210\301\211\211\211\211\211\302\303\301\304#\203O \305\306!\262\307\310\305\311!!\"\262\211A\262\242\262\312\313\"\2035 \314\2026 \315\262\316%C\244\262\301\262\202	 \300!\210\301\207" [V0 nil search-forward-regexp "^\\(?:.*.rb\\|-\\):\\([0-9]+\\): \\(.*\\)$" t match-string 2 flymake-diag-region string-to-number 1 string-match "^warning" :warning :error flymake-make-diagnostic] 15 "\n\n(fn PROC SOURCE)"]] 8 (#$ . 64005)])#@39 

(fn PROCESS-NAME COMMAND PARSER-FN)
(defalias 'ruby-flymake--helper #[771 "\301!\203\n \302!\210p\214~\210\303\304\305\306\307\310\311\312\313\314\"!\315\f\316\317\320#&\f\321ed#\210\322!)\207" [ruby--flymake-proc process-live-p kill-process make-process :name :noquery t :connection-type pipe :buffer generate-new-buffer format " *%s*" :command :sentinel make-closure #[514 "\303!\304=\2053 \305\300!\2053 \306\307\"\216r\300q\210\n)=\203, r\310!q\210\301\300\")\2022 \311\312\313\314$)\207" [V0 V1 ruby--flymake-proc process-status exit buffer-live-p make-closure #[0 "\301\302\300!!\207" [V0 kill-buffer process-buffer] 3] process-buffer flymake--log-1 :debug ruby-mode "Canceling obsolete check %s"] 7 "\n\n(fn PROC EVENT)"] process-send-region process-send-eof] 20 (#$ . 64759)])
(byte-code "\300\301\302\303\304DD\305\306\307\310\311\312\313&	\210\300\314\302\303\315DD\316\306\307\310\317\312\320&	\207" [custom-declare-variable ruby-flymake-use-rubocop-if-available funcall function #[0 "\300\207" [t] 1 #1=""] "Non-nil to use the RuboCop Flymake backend.\nOnly takes effect if RuboCop is installed.\n\nIf there is no Rubocop config file, Rubocop will be passed a flag\n'--lint' to only show syntax errors and important problems." :version "26.1" :type boolean :safe booleanp ruby-rubocop-config #[0 "\300\207" [".rubocop.yml"] 1 #1#] "Configuration file for `ruby-flymake-rubocop'." string stringp] 10)#@57 RuboCop backend for Flymake.

(fn REPORT-FN &rest ARGS)
(defalias 'ruby-flymake-rubocop #[385 "\303\304!\204\n \305\306!\210\304\307\310\311\312\313\314\257	\315\205Q \316\n\"\262\211\204/ \317\320\"\262\202H \317\321\322\n\"D\"\262\323!\203H \317\324\"\262\211\325\326\327\330	\"#)\207" [buffer-file-name default-directory ruby-rubocop-config executable-find "rubocop" error "Cannot find the rubocop executable" "--stdin" "--format" "emacs" "--cache" "false" "--display-cop-names" nil locate-dominating-file append ("--lint") "--config" expand-file-name ruby-flymake-rubocop--use-bundler-p ("bundle" "exec") ruby-flymake--helper "rubocop-flymake" make-closure #[514 "\301!\302=\203 \303\304\305\306\307 $\210eb\210\310\211\211\211\211\211\311\312\310\313#\203s \314\315!\262\316\317\314\320!!\317\314\321!!#\262\211A\262\242\262\322\323\"\203J \324\202W \322\325\"\203V \304\202W \326\262\327\315\310O%C\244\262\310\262\202 \300!\210\310\207" [V0 process-exit-status 127 flymake--log-1 :warning ruby-mode "RuboCop returned status 127: %s" buffer-string nil search-forward-regexp "^\\(?:.*.rb\\|-\\):\\([0-9]+\\):\\([0-9]+\\): \\(.*\\)$" t match-string 3 flymake-diag-region string-to-number 1 2 string-match "^[EF]: " :error "^W: " :note flymake-make-diagnostic] 17 "\n\n(fn PROC SOURCE)"]] 11 (#$ . 66197)])#@12 

(fn DIR)
(defalias 'ruby-flymake-rubocop--use-bundler-p #[257 "\300\301\"\302!\205# \303\304\305\"r\211q\210\306\307\"\216\310!\210\311\312\313\305#*\262\207" [expand-file-name "Gemfile" file-exists-p generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] insert-file-contents re-search-forward "^ *gem ['\"]rubocop['\"]" nil] 7 (#$ . 67559)])#@29 

(fn REPORT-FN &rest ARGS)
(defalias 'ruby-flymake-auto #[385 "\301\203 \302\303!\203 \304\202 \305#\207" [ruby-flymake-use-rubocop-if-available apply executable-find "rubocop" ruby-flymake-rubocop ruby-flymake-simple] 6 (#$ . 67972)])#@52 Value for `prettify-symbols-alist' in `ruby-mode'.
(defconst ruby--prettify-symbols-alist '(("<=" . 8804) (">=" . 8805) ("->" . 8594) ("=>" . 8658) ("::" . 8759) ("lambda" . 955)) (#$ . 68220))
(defvar ruby-base-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [ruby-base-mode-hook variable-documentation put "Hook run after entering Ruby mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp ruby-base-mode-map definition-name ruby-base-mode] 4)
(defvar ruby-base-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\307\306\307!\203& \313\202( \314 \"\210\307\302N\2048 \303\307\302\304\315!#\210\306\300!\204X \303\300\310\311#\210\312\300\306\300!\203P \313\202V \316\300\313\"\210\"\210\300\302N\204f \303\300\302\304\317!#\210\303\311\320\321#\207" [ruby-base-mode-abbrev-table ruby-base-mode-map variable-documentation put purecopy "Keymap for `ruby-base-mode'." boundp ruby-base-mode-syntax-table definition-name ruby-base-mode defvar-1 nil make-syntax-table "Syntax table for `ruby-base-mode'." define-abbrev-table "Abbrev table for `ruby-base-mode'." derived-mode-parent prog-mode] 5)#@350 Generic major mode for editing Ruby.

This mode is intended to be inherited by concrete major modes.
Currently there are `ruby-mode' and `ruby-ts-mode'.

In addition to any hooks its parent mode `prog-mode' might have run,
this mode runs the hook `ruby-base-mode-hook', as the final or
penultimate step during initialization.

\{ruby-base-mode-map}
(defalias 'ruby-base-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 6=\204R \326\3256C#\210\327!\210\330\f!\210678\306\331!\210\332\306\333!\210\334\306\335!\2109\306\336!\210\337\306\340!\210\307 \306\341!\210\307!\306\342!\210\343:P\"\306\344!\210\"$\306\345!\210\307%\306\346!\210\347&\306\350!\210\351(\352\353\354\355\356$\210\352\357\360\355\356$\210\352\361\362\355\356$\210\306\363!\210;3)\364\365!\207" [delay-mode-hooks major-mode mode-name ruby-base-mode-map ruby-base-mode-syntax-table ruby-base-mode-abbrev-table make-local-variable t prog-mode ruby-base-mode "Ruby" 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 comment-start "# " comment-end "" comment-column comment-start-skip "#+ *" parse-sexp-ignore-comments parse-sexp-lookup-properties paragraph-start "$\\|" paragraph-separate paragraph-ignore-fill-prefix outline-regexp "^\\s *\\(?:class\\|def\\|module\\)\\_>" outline-level #[0 "\301 \245T\207" [ruby-indent-level current-indentation] 2] add-hook after-save-hook ruby-mode-set-encoding nil local electric-indent-functions ruby--electric-indent-p flymake-diagnostic-functions ruby-flymake-auto prettify-symbols-alist run-mode-hooks ruby-base-mode-hook local-abbrev-table ruby-indent-tabs-mode indent-tabs-mode ruby-comment-column page-delimiter ruby--prettify-symbols-alist] 5 (#$ . 69542) nil])
(defvar ruby-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [ruby-mode-hook variable-documentation put "Hook run after entering Ruby mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp ruby-mode-map definition-name ruby-mode] 4)
(defvar ruby-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\307\306\307!\203& \313\202( \314 \"\210\307\302N\2048 \303\307\302\304\315!#\210\306\300!\204X \303\300\310\311#\210\312\300\306\300!\203P \313\202V \316\300\313\"\210\"\210\300\302N\204f \303\300\302\304\317!#\210\303\311\320\321#\207" [ruby-mode-abbrev-table ruby-mode-map variable-documentation put purecopy "Keymap for `ruby-mode'." boundp ruby-mode-syntax-table definition-name ruby-mode defvar-1 nil make-syntax-table "Syntax table for `ruby-mode'." define-abbrev-table "Abbrev table for `ruby-mode'." derived-mode-parent ruby-base-mode] 5)#@226 Major mode for editing Ruby code.

In addition to any hooks its parent mode `ruby-base-mode' might have
run, this mode runs the hook `ruby-mode-hook', as the final or
penultimate step during initialization.

\{ruby-mode-map}
(defalias 'ruby-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/\3310\332\333\334\335\336&\2101\204t \306\337!\210\340\306\341!\210\342!\306\343!\210\344#\306\345!\210\346%\306\347!\210\350'\306\351!\210\352)\306\353!\210\354+)\355\356!\207" [delay-mode-hooks major-mode mode-name ruby-mode-map ruby-mode-syntax-table ruby-mode-abbrev-table make-local-variable t ruby-base-mode ruby-mode "Ruby" 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 smie-setup ruby-smie-rules :forward-token ruby-smie--forward-token :backward-token ruby-smie--backward-token indent-line-function ruby-indent-line imenu-create-index-function ruby-imenu-create-index add-log-current-defun-function ruby-add-log-current-method beginning-of-defun-function ruby-beginning-of-defun end-of-defun-function ruby-end-of-defun font-lock-defaults ((ruby-font-lock-keywords) nil nil ((95 . "w"))) syntax-propertize-function ruby-syntax-propertize run-mode-hooks ruby-mode-hook local-abbrev-table ruby-smie-grammar ruby-use-smie] 7 (#$ . 72621) nil])
(byte-code "\300\301\302\303!\304B\"\210\305\306\307\310\311\257\211\203& \211@\300\312\302!\304B\"\210A\266\202\202 \210\313\304!\207" [add-to-list auto-mode-alist purecopy "\\(?:\\.\\(?:rbw?\\|ru\\|rake\\|thor\\|jbuilder\\|rabl\\|gemspec\\|podspec\\)\\|/\\(?:Gem\\|Rake\\|Cap\\|Thor\\|Puppet\\|Berks\\|Brew\\|Vagrant\\|Guard\\|Pod\\)file\\)\\'" ruby-mode "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8" interpreter-mode-alist provide] 6)
