[{"displayName":"Fish","name":"fish","patterns":[{"include":"#string-double"},{"include":"#string-single"},{"include":"#comment"},{"include":"#subshell-bare"},{"include":"#subshell"},{"include":"#command"},{"include":"#keywords"},{"include":"#io-redirection"},{"include":"#operators"},{"include":"#options"},{"include":"#variable"},{"include":"#escape"}],"repository":{"command":{"captures":{"2":{"name":"keyword.operator.pipe.fish"},"3":{"name":"keyword.control.fish"},"5":{"name":"support.function.command.fish"}},"match":"(^\\s*|&&\\s*|(\\|)\\s*|\\(\\s*|;\\s*|\\b(if|while)\\b\\s+)(?!(?<!\\.)\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\b(?![!?]))([-\\].0-9A-\\[_a-z]+)"},"command-subshell":{"captures":{"2":{"name":"keyword.operator.pipe.fish"},"3":{"name":"keyword.control.fish"},"5":{"name":"support.function.command.fish"}},"match":"(\\G\\s*|&&\\s*|(\\|)\\s*|\\(\\s*|;\\s*|\\b(if|while)\\b\\s+)(?!(?<!\\.)\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\b(?![!?]))([-\\].0-9A-\\[_a-z]+)"},"comment":{"captures":{"1":{"name":"punctuation.definition.comment.fish"}},"match":"(?<!\\$)(#)(?!\\{).*$\\n?","name":"comment.line.number-sign.fish"},"escape":{"patterns":[{"match":"\\\\[] \"#$\\&-*;<>?\\[^abefnrtv{-~]","name":"constant.character.escape.string.fish"},{"match":"\\\\x\\h{1,2}","name":"constant.character.escape.hex-ascii.fish"},{"match":"\\\\X\\h{1,2}","name":"constant.character.escape.hex-byte.fish"},{"match":"\\\\[0-7]{1,3}","name":"constant.character.escape.octal.fish"},{"match":"\\\\u\\h{1,4}","name":"constant.character.escape.unicode-16-bit.fish"},{"match":"\\\\U\\h{1,8}","name":"constant.character.escape.unicode-32-bit.fish"},{"match":"\\\\c[A-Za-z]","name":"constant.character.escape.control.fish"}]},"io-redirection":{"patterns":[{"captures":{"1":{"name":"keyword.operator.redirect.fish"},"2":{"name":"keyword.operator.redirect.target.fish"}},"match":"(<|(?:[>^]|>>|\\^\\^)(?:&[-012])?|[012](?:[<>]|>>)(?:&[-012])?)\\s*(?!\\()([\\--9A-Z_a-z]+)"},{"match":"<|([>^]|>>|\\^\\^)(&[-012])?|[012]([<>]|>>)(&[-012])?","name":"keyword.operator.redirect.fish"}]},"keywords":{"patterns":[{"captures":{"2":{"name":"keyword.control.fish"}},"match":"(^\\s*|&&\\s*|(?<=\\|)\\s*|\\(\\s*|;\\s*|(?<=\\bwhile\\b)\\s+|(?<=\\bif\\b)\\s+|(?<=\\band\\b)\\s+|(?<=\\bor\\b)\\s+|(?<=\\bnot\\b)\\s+)(?<!\\.)\\b(while|if|and|or|not)\\b(?![!?])"},{"captures":{"2":{"name":"keyword.control.fish"}},"match":"(^\\s*|&&\\s*|(?<=\\|)\\s*|\\(\\s*|;\\s*)(?<!\\.)\\b(function|else|switch|case|for|begin|end|continue|break|return|source|exit|wait)\\b(?![!?])"},{"match":"\\b(in)\\b(?![!?])","name":"keyword.control.fish"}]},"keywords-subshell":{"patterns":[{"captures":{"2":{"name":"keyword.control.fish"}},"match":"(\\G\\s*|&&\\s*|(?<=\\|)\\s*|\\(\\s*|;\\s*|(?<=\\bwhile\\b)\\s+|(?<=\\bif\\b)\\s+|(?<=\\band\\b)\\s+|(?<=\\bor\\b)\\s+|(?<=\\bnot\\b)\\s+)(?<!\\.)\\b(while|if|and|or|not)\\b(?![!?])"},{"captures":{"2":{"name":"keyword.control.fish"}},"match":"(\\G\\s*|&&\\s*|(?<=\\|)\\s*|\\(\\s*|;\\s*)(?<!\\.)\\b(function|else|switch|case|for|begin|end|continue|break|return|source|exit|wait)\\b(?![!?])"},{"match":"\\b(in)\\b(?![!?])","name":"keyword.control.fish"}]},"operators":{"patterns":[{"match":"&","name":"keyword.operator.background.fish"},{"match":"\\*\\*|[*?]","name":"keyword.operator.glob.fish"}]},"options":{"captures":{"1":{"name":"source.option.fish"}},"match":"\\s(-{1,2}[-0-9A-Z_a-z]+|-\\w)\\b"},"slice":{"begin":"\\[","beginCaptures":{"0":{"name":"punctuation.definition.slice.begin.fish"}},"end":"(?<!\\\\)((\\\\\\\\)*)(])","endCaptures":{"1":{"name":"constant.character.escape.string.fish"},"3":{"name":"punctuation.definition.slice.end.fish"}},"name":"meta.embedded.slice.fish variable.interpolation.fish","patterns":[{"include":"#string-double"},{"include":"#string-single"},{"include":"#subshell-bare"},{"include":"#subshell"},{"include":"#variable"},{"include":"#escape"}]},"slice-string-double":{"begin":"\\[","beginCaptures":{"0":{"name":"punctuation.definition.slice.begin.fish"}},"end":"(?<!\\\\)((\\\\\\\\)*)(])","endCaptures":{"1":{"name":"constant.character.escape.string.fish"},"3":{"name":"punctuation.definition.slice.end.fish"}},"name":"meta.embedded.slice.fish variable.interpolation.string.fish","patterns":[{"include":"#subshell"},{"include":"#variable"},{"match":"\\\\([\"$]|$|\\\\)","name":"constant.character.escape.fish"}]},"string-double":{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.fish"}},"end":"\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.fish"}},"name":"string.quoted.double.fish","patterns":[{"include":"#subshell"},{"include":"#variable-string-double"},{"match":"\\\\([\"$]|$|\\\\)","name":"constant.character.escape.fish"}]},"string-single":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.fish"}},"end":"'","endCaptures":{"0":{"name":"punctuation.definition.string.end.fish"}},"name":"string.quoted.single.fish","patterns":[{"match":"\\\\(['\\\\`])","name":"constant.character.escape.fish"}]},"subshell":{"begin":"\\$\\(","beginCaptures":{"0":{"name":"punctuation.definition.subshell.begin.fish"}},"end":"(?<!\\\\)((\\\\\\\\)*)(\\))","endCaptures":{"1":{"name":"constant.character.escape.string.fish"},"3":{"name":"punctuation.definition.subshell.end.fish"}},"name":"meta.embedded.subshell.fish","patterns":[{"include":"#string-double"},{"include":"#string-single"},{"include":"#comment"},{"include":"#keywords-subshell"},{"include":"#command-subshell"},{"include":"#io-redirection"},{"include":"#operators"},{"include":"#options"},{"include":"#subshell"},{"include":"#variable"},{"include":"#escape"}]},"subshell-bare":{"begin":"\\(","beginCaptures":{"0":{"name":"punctuation.definition.subshell.begin.fish"}},"end":"(?<!\\\\)((\\\\\\\\)*)(\\))","endCaptures":{"1":{"name":"constant.character.escape.string.fish"},"3":{"name":"punctuation.definition.subshell.end.fish"}},"name":"meta.embedded.subshell.fish","patterns":[{"include":"#string-double"},{"include":"#string-single"},{"include":"#comment"},{"include":"#keywords-subshell"},{"include":"#command-subshell"},{"include":"#io-redirection"},{"include":"#operators"},{"include":"#options"},{"include":"#subshell-bare"},{"include":"#subshell"},{"include":"#variable"},{"include":"#escape"}]},"variable":{"patterns":[{"begin":"(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b(?=\\[)","beginCaptures":{"1":{"name":"punctuation.definition.variable.fish"},"2":{"name":"variable.language.fish"}},"end":"(?<=])","name":"variable.language.fish","patterns":[{"include":"#slice"}]},{"captures":{"1":{"name":"punctuation.definition.variable.fish"}},"match":"(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b","name":"variable.language.fish"},{"begin":"(\\$)([A-Z_a-z][0-9A-Z_a-z]*)(?=\\[)","beginCaptures":{"1":{"name":"punctuation.definition.variable.fish"},"2":{"name":"variable.other.normal.fish"}},"end":"(?<=])","name":"variable.other.normal.fish","patterns":[{"include":"#slice"}]},{"captures":{"1":{"name":"punctuation.definition.variable.fish"}},"match":"(\\$)[A-Z_a-z][0-9A-Z_a-z]*","name":"variable.other.normal.fish"}]},"variable-string-double":{"patterns":[{"begin":"(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b(?=\\[)","beginCaptures":{"1":{"name":"punctuation.definition.variable.fish"},"2":{"name":"variable.language.fish"}},"end":"(?<=])","name":"variable.language.fish","patterns":[{"include":"#slice-string-double"}]},{"captures":{"1":{"name":"punctuation.definition.variable.fish"}},"match":"(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b","name":"variable.language.fish"},{"begin":"(\\$)([A-Z_a-z][0-9A-Z_a-z]*)(?=\\[)","beginCaptures":{"1":{"name":"punctuation.definition.variable.fish"},"2":{"name":"variable.other.normal.fish"}},"end":"(?<=])","name":"variable.other.normal.fish","patterns":[{"include":"#slice-string-double"}]},{"captures":{"1":{"name":"punctuation.definition.variable.fish"}},"match":"(\\$)[A-Z_a-z][0-9A-Z_a-z]*","name":"variable.other.normal.fish"}]}},"scopeName":"source.fish"}]