@elice/material-exercise 1.231212.0 → 1.231228.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
- package/cjs/components/material-exercise/MaterialExercise.js +54 -59
- package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
- package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
- package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
- package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
- package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
- package/cjs/components/material-exercise/context/context.js +1 -7
- package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
- package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
- package/cjs/components/material-exercise/context/recoil.js +293 -544
- package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
- package/cjs/components/material-exercise/context/subjects.js +3 -5
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
- package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
- package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
- package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
- package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
- package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
- package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
- package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
- package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
- package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
- package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
- package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
- package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
- package/cjs/components/shared/file-icon/FileIcon.js +17 -23
- package/cjs/components/shared/file-tabs/FileTab.js +30 -36
- package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
- package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
- package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
- package/cjs/components/shared/file-tabs/util.js +14 -29
- package/cjs/components/shared/file-tree/FileTree.js +12 -17
- package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
- package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
- package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
- package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
- package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
- package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
- package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
- package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
- package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
- package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
- package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
- package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
- package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
- package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
- package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
- package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
- package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
- package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
- package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
- package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
- package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
- package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
- package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
- package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
- package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
- package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
- package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
- package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
- package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
- package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
- package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
- package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
- package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
- package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
- package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
- package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
- package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
- package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
- package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
- package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
- package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
- package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
- package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
- package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
- package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
- package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
- package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
- package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
- package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
- package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
- package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
- package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
- package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
- package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
- package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
- package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
- package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
- package/cjs/components/shared/xterm/Xterm.js +58 -81
- package/cjs/components/shared/xterm/XtermLazy.js +5 -11
- package/cjs/components/shared/xterm/locales/en.json.js +1 -1
- package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
- package/cjs/components/shared/xterm/utils/index.js +0 -2
- package/cjs/constants/arduino.js +10 -12
- package/cjs/constants/shortcutKeyMap.js +2 -4
- package/cjs/constants/stylesheets.js +5 -9
- package/cjs/hooks/useArduino.js +141 -284
- package/cjs/hooks/useExerciseFile.js +22 -26
- package/cjs/hooks/useExericseShortcut.js +4 -8
- package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
- package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
- package/cjs/hooks/useStdioTextConcator.js +10 -22
- package/cjs/hooks/useStdioWebSocket.js +28 -34
- package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
- package/cjs/hooks/useUsercodeHistory.js +63 -117
- package/cjs/index.js +4 -6
- package/cjs/utils/arduino.js +11 -25
- package/cjs/utils/exerciseFile.js +10 -10
- package/cjs/utils/runner.js +15 -31
- package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
- package/es/components/material-exercise/MaterialExercise.js +34 -35
- package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
- package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
- package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
- package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
- package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
- package/es/components/material-exercise/context/context.js +1 -1
- package/es/components/material-exercise/context/recoil.js +290 -535
- package/es/components/material-exercise/context/subjects.js +3 -3
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
- package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
- package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
- package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
- package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
- package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
- package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
- package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
- package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
- package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
- package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
- package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
- package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
- package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
- package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
- package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
- package/es/components/shared/file-icon/FileIcon.js +15 -17
- package/es/components/shared/file-tabs/FileTab.js +22 -24
- package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
- package/es/components/shared/file-tabs/FileTabs.js +35 -55
- package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/es/components/shared/file-tabs/util.js +14 -27
- package/es/components/shared/file-tree/FileTree.js +3 -3
- package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
- package/es/components/shared/file-tree/FileTreeList.js +33 -29
- package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
- package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
- package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
- package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
- package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
- package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
- package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
- package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
- package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
- package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
- package/es/components/shared/file-viewer/FileViewer.js +21 -38
- package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
- package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
- package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
- package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
- package/es/components/shared/file-viewer/FileViewerText.js +9 -17
- package/es/components/shared/material-modal/MaterialModal.js +8 -7
- package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
- package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
- package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
- package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
- package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
- package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
- package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
- package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
- package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
- package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
- package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
- package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
- package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
- package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
- package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
- package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
- package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
- package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
- package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
- package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
- package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
- package/es/components/shared/no-vnc/NoVnc.js +42 -59
- package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
- package/es/components/shared/preview-container/PreviewContainer.js +8 -7
- package/es/components/shared/web-browser/WebBrowser.js +29 -40
- package/es/components/shared/xterm/Xterm.js +51 -69
- package/es/components/shared/xterm/XtermLazy.js +2 -4
- package/es/constants/arduino.js +10 -10
- package/es/constants/shortcutKeyMap.js +1 -3
- package/es/constants/stylesheets.js +5 -7
- package/es/hooks/useArduino.js +141 -278
- package/es/hooks/useExerciseFile.js +22 -24
- package/es/hooks/useExericseShortcut.js +4 -6
- package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
- package/es/hooks/useRunnerRoomWebSocket.js +27 -51
- package/es/hooks/useStdioTextConcator.js +10 -16
- package/es/hooks/useStdioWebSocket.js +28 -32
- package/es/hooks/useUsercodeEditWebSocket.js +157 -232
- package/es/hooks/useUsercodeHistory.js +63 -115
- package/es/utils/arduino.js +11 -23
- package/es/utils/exerciseFile.js +10 -8
- package/es/utils/runner.js +15 -29
- package/package.json +11 -7
- package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
- package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const information_for_contributors=["This file has been converted from https://github.com/dotnet/csharp-tmLanguage/blob/master/grammars/csharp.tmLanguage","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."];const version="https://github.com/dotnet/csharp-tmLanguage/commit/16612717ccd557383c0c821d7b6ae6662492ffde";const name="C#";const scopeName="source.cs";const patterns=[{include:"#preprocessor"},{include:"#comment"},{include:"#directives"},{include:"#declarations"},{include:"#script-top-level"}];const repository={directives:{patterns:[{include:"#extern-alias-directive"},{include:"#using-directive"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},declarations:{patterns:[{include:"#namespace-declaration"},{include:"#type-declarations"},{include:"#punctuation-semicolon"}]},"script-top-level":{patterns:[{include:"#method-declaration"},{include:"#statement"},{include:"#punctuation-semicolon"}]},"type-declarations":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#class-declaration"},{include:"#delegate-declaration"},{include:"#enum-declaration"},{include:"#interface-declaration"},{include:"#record-declaration"},{include:"#struct-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"class-or-struct-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#storage-modifier"},{include:"#type-declarations"},{include:"#property-declaration"},{include:"#field-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#variable-initializer"},{include:"#constructor-declaration"},{include:"#destructor-declaration"},{include:"#operator-declaration"},{include:"#conversion-operator-declaration"},{include:"#method-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},"interface-members":{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#property-declaration"},{include:"#event-declaration"},{include:"#indexer-declaration"},{include:"#method-declaration"},{include:"#attribute-section"},{include:"#punctuation-semicolon"}]},statement:{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#while-statement"},{include:"#do-statement"},{include:"#for-statement"},{include:"#foreach-statement"},{include:"#if-statement"},{include:"#else-part"},{include:"#switch-statement"},{include:"#goto-statement"},{include:"#return-statement"},{include:"#break-or-continue-statement"},{include:"#throw-statement"},{include:"#yield-statement"},{include:"#await-statement"},{include:"#try-statement"},{include:"#checked-unchecked-statement"},{include:"#lock-statement"},{include:"#using-statement"},{include:"#labeled-statement"},{include:"#object-creation-expression"},{include:"#array-creation-expression"},{include:"#anonymous-object-creation-expression"},{include:"#local-declaration"},{include:"#block"},{include:"#expression"},{include:"#punctuation-semicolon"}]},expression:{patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#checked-unchecked-expression"},{include:"#typeof-or-default-expression"},{include:"#nameof-expression"},{include:"#throw-expression"},{include:"#interpolated-string"},{include:"#verbatim-interpolated-string"},{include:"#this-or-base-expression"},{include:"#switch-expression"},{include:"#conditional-operator"},{include:"#expression-operators"},{include:"#await-expression"},{include:"#query-expression"},{include:"#as-expression"},{include:"#is-expression"},{include:"#anonymous-method-expression"},{include:"#object-creation-expression"},{include:"#array-creation-expression"},{include:"#anonymous-object-creation-expression"},{include:"#invocation-expression"},{include:"#member-access-expression"},{include:"#element-access-expression"},{include:"#cast-expression"},{include:"#literal"},{include:"#parenthesized-expression"},{include:"#tuple-deconstruction-assignment"},{include:"#initializer-expression"},{include:"#identifier"}]},"extern-alias-directive":{begin:"\\s*(extern)\\b\\s*(alias)\\b\\s*(@?[_[:alpha:]][_[:alnum:]]*)",beginCaptures:{"1":{name:"keyword.other.extern.cs"},"2":{name:"keyword.other.alias.cs"},"3":{name:"variable.other.alias.cs"}},end:"(?=;)"},"using-directive":{patterns:[{begin:"\\b(using)\\b\\s+(static)\\s+",beginCaptures:{"1":{name:"keyword.other.using.cs"},"2":{name:"keyword.other.static.cs"}},end:"(?=;)",patterns:[{include:"#type"}]},{begin:"\\b(using)\\s+(?=(@?[_[:alpha:]][_[:alnum:]]*)\\s*=)",beginCaptures:{"1":{name:"keyword.other.using.cs"},"2":{name:"entity.name.type.alias.cs"}},end:"(?=;)",patterns:[{include:"#comment"},{include:"#type"},{include:"#operator-assignment"}]},{begin:"\\b(using)\\s*",beginCaptures:{"1":{name:"keyword.other.using.cs"}},end:"(?=;)",patterns:[{include:"#comment"},{name:"entity.name.type.namespace.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#operator-assignment"}]}]},"attribute-section":{begin:"(\\[)(assembly|module|field|event|method|param|property|return|type)?(\\:)?",beginCaptures:{"1":{name:"punctuation.squarebracket.open.cs"},"2":{name:"keyword.other.attribute-specifier.cs"},"3":{name:"punctuation.separator.colon.cs"}},end:"(\\])",endCaptures:{"1":{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute"},{include:"#punctuation-comma"}]},attribute:{patterns:[{include:"#type-name"},{include:"#attribute-arguments"}]},"attribute-arguments":{begin:"(\\()",beginCaptures:{"1":{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{"1":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#attribute-named-argument"},{include:"#expression"},{include:"#punctuation-comma"}]},"attribute-named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",beginCaptures:{"1":{name:"entity.name.variable.property.cs"}},end:"(?=(,|\\)))",patterns:[{include:"#operator-assignment"},{include:"#expression"}]},"namespace-declaration":{begin:"\\b(namespace)\\s+",beginCaptures:{"1":{name:"keyword.other.namespace.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{name:"entity.name.type.namespace.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#punctuation-accessor"},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#declarations"},{include:"#using-directive"},{include:"#punctuation-semicolon"}]}]},"storage-modifier":{name:"storage.modifier.cs",match:"(?<!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref)\\b"},"class-declaration":{begin:"(?=\\bclass\\b)",end:"(?<=\\})",patterns:[{begin:"(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",beginCaptures:{"1":{name:"keyword.other.class.cs"},"2":{name:"entity.name.type.class.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"delegate-declaration":{begin:"(?x)\n(?:\\b(delegate)\\b)\\s+\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",beginCaptures:{"1":{name:"keyword.other.delegate.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.type.delegate.cs"},"8":{patterns:[{include:"#type-parameter-list"}]}},end:"(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"}]},"enum-declaration":{begin:"(?=\\benum\\b)",end:"(?<=\\})",patterns:[{begin:"(?=enum)",end:"(?=\\{)",patterns:[{include:"#comment"},{match:"(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)",captures:{"1":{name:"keyword.other.enum.cs"},"2":{name:"entity.name.type.enum.cs"}}},{begin:":",beginCaptures:{"0":{name:"punctuation.separator.colon.cs"}},end:"(?=\\{)",patterns:[{include:"#type"}]}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#preprocessor"},{include:"#comment"},{include:"#attribute-section"},{include:"#punctuation-comma"},{begin:"@?[_[:alpha:]][_[:alnum:]]*",beginCaptures:{"0":{name:"entity.name.variable.enum-member.cs"}},end:"(?=(,|\\}))",patterns:[{include:"#comment"},{include:"#variable-initializer"}]}]},{include:"#preprocessor"},{include:"#comment"}]},"interface-declaration":{begin:"(?=\\binterface\\b)",end:"(?<=\\})",patterns:[{begin:"(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",beginCaptures:{"1":{name:"keyword.other.interface.cs"},"2":{name:"entity.name.type.interface.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#interface-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"record-declaration":{begin:"(?=\\brecord\\b)",end:"(?<=\\})",patterns:[{begin:"(?x)\n(record)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",beginCaptures:{"1":{name:"keyword.other.record.cs"},"2":{name:"entity.name.type.record.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"struct-declaration":{begin:"(?=\\bstruct\\b)",end:"(?<=\\})",patterns:[{begin:"(?x)\n(struct)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",beginCaptures:{"1":{name:"keyword.other.struct.cs"},"2":{name:"entity.name.type.struct.cs"}},end:"(?=\\{)",patterns:[{include:"#comment"},{include:"#type-parameter-list"},{include:"#base-types"},{include:"#generic-constraints"}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#class-or-struct-members"}]},{include:"#preprocessor"},{include:"#comment"}]},"type-parameter-list":{begin:"\\<",beginCaptures:{"0":{name:"punctuation.definition.typeparameters.begin.cs"}},end:"\\>",endCaptures:{"0":{name:"punctuation.definition.typeparameters.end.cs"}},patterns:[{match:"\\b(in|out)\\b",captures:{"1":{name:"storage.modifier.cs"}}},{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b",captures:{"1":{name:"entity.name.type.type-parameter.cs"}}},{include:"#comment"},{include:"#punctuation-comma"},{include:"#attribute-section"}]},"base-types":{begin:":",beginCaptures:{"0":{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|where)",patterns:[{include:"#type"},{include:"#punctuation-comma"},{include:"#preprocessor"}]},"generic-constraints":{begin:"(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{"1":{name:"keyword.other.where.cs"},"2":{name:"entity.name.type.type-parameter.cs"},"3":{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|where|;|=>)",patterns:[{name:"keyword.other.class.cs",match:"\\bclass\\b"},{name:"keyword.other.struct.cs",match:"\\bstruct\\b"},{match:"(new)\\s*(\\()\\s*(\\))",captures:{"1":{name:"keyword.other.new.cs"},"2":{name:"punctuation.parenthesis.open.cs"},"3":{name:"punctuation.parenthesis.close.cs"}}},{include:"#type"},{include:"#punctuation-comma"},{include:"#generic-constraints"}]},"field-declaration":{begin:"(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s* # first field name\n(?!=>|==)(?=,|;|=|$)",beginCaptures:{"1":{patterns:[{include:"#type"}]},"6":{name:"entity.name.variable.field.cs"}},end:"(?=;)",patterns:[{name:"entity.name.variable.field.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"},{include:"#class-or-struct-members"}]},"property-declaration":{begin:"(?x)\n\n# The negative lookahead below ensures that we don't match nested types\n# or other declarations as properties.\n(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b)\n\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<property_name>\\g<identifier>)\\s*\n(?=\\{|=>|$)",beginCaptures:{"1":{patterns:[{include:"#type"}]},"7":{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},"8":{name:"entity.name.variable.property.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#property-accessors"},{include:"#expression-body"},{include:"#variable-initializer"},{include:"#class-or-struct-members"}]},"indexer-declaration":{begin:"(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<indexer_name>this)\\s*\n(?=\\[)",beginCaptures:{"1":{patterns:[{include:"#type"}]},"7":{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},"8":{name:"keyword.other.this.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#bracketed-parameter-list"},{include:"#property-accessors"},{include:"#expression-body"},{include:"#variable-initializer"}]},"event-declaration":{begin:"(?x)\n\\b(event)\\b\\s*\n(?<return_type>\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<event_names>\\g<identifier>(?:\\s*,\\s*\\g<identifier>)*)\\s*\n(?=\\{|;|$)",beginCaptures:{"1":{name:"keyword.other.event.cs"},"2":{patterns:[{include:"#type"}]},"8":{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},"9":{patterns:[{name:"entity.name.variable.event.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#punctuation-comma"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#event-accessors"},{include:"#punctuation-comma"}]},"property-accessors":{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{name:"storage.modifier.cs",match:"\\b(private|protected|internal)\\b"},{name:"keyword.other.get.cs",match:"\\b(get)\\b"},{name:"keyword.other.set.cs",match:"\\b(set)\\b"},{name:"keyword.other.init.cs",match:"\\b(init)\\b"},{include:"#comment"},{include:"#attribute-section"},{include:"#expression-body"},{include:"#block"},{include:"#punctuation-semicolon"}]},"event-accessors":{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{name:"keyword.other.add.cs",match:"\\b(add)\\b"},{name:"keyword.other.remove.cs",match:"\\b(remove)\\b"},{include:"#comment"},{include:"#attribute-section"},{include:"#expression-body"},{include:"#block"},{include:"#punctuation-semicolon"}]},"method-declaration":{begin:"(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",beginCaptures:{"1":{patterns:[{include:"#type"}]},"7":{patterns:[{include:"#type"},{include:"#punctuation-accessor"}]},"8":{name:"entity.name.function.cs"},"9":{patterns:[{include:"#type-parameter-list"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#generic-constraints"},{include:"#expression-body"},{include:"#block"}]},"constructor-declaration":{begin:"(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",end:"(?<=\\})|(?=;)",patterns:[{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\b",captures:{"1":{name:"entity.name.function.cs"}}},{begin:"(:)",beginCaptures:{"1":{name:"punctuation.separator.colon.cs"}},end:"(?=\\{|=>)",patterns:[{include:"#constructor-initializer"}]},{include:"#parenthesized-parameter-list"},{include:"#preprocessor"},{include:"#comment"},{include:"#expression-body"},{include:"#block"}]},"constructor-initializer":{begin:"\\b(?:(base)|(this))\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.other.base.cs"},"2":{name:"keyword.other.this.cs"}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"destructor-declaration":{begin:"(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",beginCaptures:{"1":{name:"punctuation.tilde.cs"},"2":{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"operator-declaration":{begin:"(?x)\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?<operator_keyword>(?:\\b(?:operator)))\\s*\n(?<operator>(?:\\+|-|\\*|/|%|&|\\||\\^|\\<\\<|\\>\\>|==|!=|\\>|\\<|\\>=|\\<=|!|~|\\+\\+|--|true|false))\\s*\n(?=\\()",beginCaptures:{"1":{patterns:[{include:"#type"}]},"6":{name:"keyword.other.operator-decl.cs"},"7":{name:"entity.name.function.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},"conversion-operator-declaration":{begin:"(?x)\n(?<explicit_or_implicit_keyword>(?:\\b(?:explicit|implicit)))\\s*\n(?<operator_keyword>(?:\\b(?:operator)))\\s*\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\()",beginCaptures:{"1":{patterns:[{match:"\\b(explicit)\\b",captures:{"1":{name:"keyword.other.explicit.cs"}}},{match:"\\b(implicit)\\b",captures:{"1":{name:"keyword.other.implicit.cs"}}}]},"2":{name:"keyword.other.operator-decl.cs"},"3":{patterns:[{include:"#type"}]}},end:"(?<=\\})|(?=;)",patterns:[{include:"#comment"},{include:"#parenthesized-parameter-list"},{include:"#expression-body"},{include:"#block"}]},block:{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#statement"}]},"variable-initializer":{begin:"(?<!=|!)(=)(?!=|>)",beginCaptures:{"1":{name:"keyword.operator.assignment.cs"}},end:"(?=[,\\)\\];}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"expression-body":{begin:"=>",beginCaptures:{"0":{name:"keyword.operator.arrow.cs"}},end:"(?=[,\\);}])",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"goto-statement":{begin:"(?<!\\.)\\b(goto)\\b",beginCaptures:{"1":{name:"keyword.control.goto.cs"}},end:"(?=;)",patterns:[{begin:"\\b(case)\\b",beginCaptures:{"1":{name:"keyword.control.case.cs"}},end:"(?=;)",patterns:[{include:"#expression"}]},{match:"\\b(default)\\b",captures:{"1":{name:"keyword.control.default.cs"}}},{name:"entity.name.label.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"}]},"return-statement":{begin:"(?<!\\.)\\b(return)\\b",beginCaptures:{"1":{name:"keyword.control.flow.return.cs"}},end:"(?=;)",patterns:[{include:"#ref-modifier"},{include:"#expression"}]},"break-or-continue-statement":{match:"(?<!\\.)\\b(?:(break)|(continue))\\b",captures:{"1":{name:"keyword.control.flow.break.cs"},"2":{name:"keyword.control.flow.continue.cs"}}},"throw-statement":{begin:"(?<!\\.)\\b(throw)\\b",beginCaptures:{"1":{name:"keyword.control.flow.throw.cs"}},end:"(?=;)",patterns:[{include:"#expression"}]},"yield-statement":{patterns:[{include:"#yield-return-statement"},{include:"#yield-break-statement"}]},"yield-return-statement":{begin:"(?<!\\.)\\b(yield)\\b\\s*\\b(return)\\b",beginCaptures:{"1":{name:"keyword.control.flow.yield.cs"},"2":{name:"keyword.control.flow.return.cs"}},end:"(?=;)",patterns:[{include:"#expression"}]},"yield-break-statement":{match:"(?<!\\.)\\b(yield)\\b\\s*\\b(break)\\b",captures:{"1":{name:"keyword.control.flow.yield.cs"},"2":{name:"keyword.control.flow.break.cs"}}},"await-statement":{begin:"(?<!\\.)\\b(await)\\b",beginCaptures:{"1":{name:"keyword.other.await.cs"}},end:"(?=;)",patterns:[{include:"#statement"}]},"if-statement":{begin:"(?<!\\.)\\b(if)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.control.conditional.if.cs"}},end:"(?<=\\})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},"else-part":{begin:"(?<!\\.)\\b(else)\\b",beginCaptures:{"1":{name:"keyword.control.conditional.else.cs"}},end:"(?<=\\})|(?=;)",patterns:[{include:"#statement"}]},"switch-statement":{begin:"(?<!\\.)\\b(switch)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.control.switch.cs"}},end:"(?<=\\})",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#switch-label"},{include:"#statement"}]}]},"switch-expression":{begin:"(?x) (?<!\\.)\\b(switch)\\b",beginCaptures:{"1":{name:"keyword.control.switch.cs"}},end:"(?<=\\})",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#comment"},{include:"#literal"},{include:"#switch-var-pattern"},{include:"#switch-property-expression"},{include:"#member-access-expression"},{include:"#switch-pattern"},{include:"#expression-body"},{include:"#punctuation-comma"}]}]},"switch-pattern":{begin:"(?x) # e.g. int x OR var x\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\b\\s*",beginCaptures:{"1":{patterns:[{include:"#type"}]},"2":{name:"entity.name.variable.local.cs"}},end:"(?==>)",patterns:[{include:"#comment"},{include:"#switch-when-clause"}]},"switch-property-expression":{begin:"(?x) # e.g. int x OR var x\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\\s*\n(\\{)",beginCaptures:{"1":{patterns:[{include:"#type"}]},"6":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},"switch-var-pattern":{begin:"(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*",beginCaptures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]}},end:"(?==>)",patterns:[{include:"#comment"},{include:"#switch-when-clause"}]},"switch-when-clause":{begin:"(?<!\\.)\\b(when)\\b\\s*(\\()?",beginCaptures:{"1":{name:"keyword.control.try.when.cs"},"2":{name:"punctuation.parenthesis.open.cs"}},end:"(?==>)",patterns:[{include:"#comment"},{include:"#expression"},{include:"#punctuation-comma"},{match:"\\(",captures:{"0":{name:"punctuation.parenthesis.open.cs"}}},{match:"\\)",captures:{"0":{name:"punctuation.parenthesis.close.cs"}}}]},"switch-label":{patterns:[{begin:"(?<!\\.)\\b(case)\\b\\s+",beginCaptures:{"1":{name:"keyword.control.case.cs"}},end:":",endCaptures:{"0":{name:"punctuation.separator.colon.cs"}},patterns:[{include:"#expression"}]},{match:"(?<!\\.)\\b(default)\\b\\s*(:)",captures:{"1":{name:"keyword.control.default.cs"},"2":{name:"punctuation.separator.colon.cs"}}}]},"do-statement":{begin:"(?<!\\.)\\b(do)\\b",beginCaptures:{"1":{name:"keyword.control.loop.do.cs"}},end:"(?=;|})",patterns:[{include:"#statement"}]},"while-statement":{begin:"(?<!\\.)\\b(while)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.control.loop.while.cs"}},end:"(?<=\\})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},"for-statement":{begin:"(?<!\\.)\\b(for)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.control.loop.for.cs"}},end:"(?<=\\})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#local-variable-declaration"},{include:"#expression"},{include:"#punctuation-comma"},{include:"#punctuation-semicolon"}]},{include:"#statement"}]},"foreach-statement":{begin:"(?<!\\.)\\b(foreach)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.control.loop.foreach.cs"}},end:"(?<=\\})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{match:"(?x)\n(?:\n (\\bvar\\b)|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s+\n\\b(in)\\b",captures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.local.cs"},"8":{name:"keyword.control.loop.in.cs"}}},{match:"(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)?\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\n\\b(in)\\b",captures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]},"3":{name:"keyword.control.loop.in.cs"}}},{include:"#expression"}]},{include:"#statement"}]},"try-statement":{patterns:[{include:"#try-block"},{include:"#catch-clause"},{include:"#finally-clause"}]},"try-block":{begin:"(?<!\\.)\\b(try)\\b",beginCaptures:{"1":{name:"keyword.control.try.cs"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#block"}]},"finally-clause":{begin:"(?<!\\.)\\b(finally)\\b",beginCaptures:{"1":{name:"keyword.control.try.finally.cs"}},end:"(?<=\\})",patterns:[{include:"#comment"},{include:"#block"}]},"catch-clause":{begin:"(?<!\\.)\\b(catch)\\b",beginCaptures:{"1":{name:"keyword.control.try.catch.cs"}},end:"(?<=\\})",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{match:"(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?",captures:{"1":{patterns:[{include:"#type"}]},"6":{name:"entity.name.variable.local.cs"}}}]},{include:"#when-clause"},{include:"#comment"},{include:"#block"}]},"when-clause":{begin:"(?<!\\.)\\b(when)\\b\\s*(\\()",beginCaptures:{"1":{name:"keyword.control.try.when.cs"},"2":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"},{include:"#comment"}]},"checked-unchecked-statement":{begin:"(?<!\\.)\\b(?:(checked)|(unchecked))\\b\\s*(?!\\()",beginCaptures:{"1":{name:"keyword.other.checked.cs"},"2":{name:"keyword.other.unchecked.cs"}},end:"(?<=\\})",patterns:[{include:"#block"},{include:"#comment"}]},"lock-statement":{begin:"(?<!\\.)\\b(lock)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.other.lock.cs"}},end:"(?<=\\})|(?=;)",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},{include:"#statement"}]},"using-statement":{begin:"(?<!\\.)\\b(using)\\b\\s*(?=\\()",beginCaptures:{"1":{name:"keyword.other.using.cs"}},end:"(?=\\;|})",patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#local-variable-declaration"},{include:"#expression"}]},{include:"#statement"}]},"labeled-statement":{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",captures:{"1":{name:"entity.name.label.cs"},"2":{name:"punctuation.separator.colon.cs"}}},"local-declaration":{patterns:[{include:"#local-constant-declaration"},{include:"#local-variable-declaration"},{include:"#local-function-declaration"},{include:"#local-tuple-var-deconstruction"}]},"local-variable-declaration":{begin:"(?x)\n(?:\n (?:(\\busing)\\s+)?\n (?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)| # ref local\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref local\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?!=>)\n(?=,|;|=|\\))",beginCaptures:{"1":{name:"keyword.other.using.cs"},"2":{name:"storage.modifier.cs"},"3":{name:"storage.modifier.cs"},"4":{name:"keyword.other.var.cs"},"5":{patterns:[{include:"#type"}]},"10":{name:"entity.name.variable.local.cs"}},end:"(?=;|\\))",patterns:[{name:"entity.name.variable.local.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"local-constant-declaration":{begin:"(?x)\n(?<const_keyword>\\b(?:const)\\b)\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?=,|;|=)",beginCaptures:{"1":{name:"storage.modifier.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.local.cs"}},end:"(?=;)",patterns:[{name:"entity.name.variable.local.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},{include:"#punctuation-comma"},{include:"#comment"},{include:"#variable-initializer"}]},"local-function-declaration":{patterns:[{include:"#method-declaration"}]},"local-tuple-var-deconstruction":{begin:"(?x) # e.g. var (x, y) = GetPoint();\n(?:\\b(var)\\b\\s*)\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?=;|=|\\))",beginCaptures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#tuple-declaration-deconstruction-element-list"}]}},end:"(?=;|\\))",patterns:[{include:"#comment"},{include:"#variable-initializer"}]},"tuple-deconstruction-assignment":{match:"(?x)\n(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?!=>|==)(?==)",captures:{"1":{patterns:[{include:"#tuple-deconstruction-element-list"}]}}},"tuple-declaration-deconstruction-element-list":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#tuple-declaration-deconstruction-element-list"},{include:"#declaration-expression-tuple"},{include:"#punctuation-comma"},{match:"(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",captures:{"1":{name:"entity.name.variable.tuple-element.cs"}}}]},"tuple-deconstruction-element-list":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#tuple-deconstruction-element-list"},{include:"#declaration-expression-tuple"},{include:"#punctuation-comma"},{match:"(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",captures:{"1":{name:"variable.other.readwrite.cs"}}}]},"declaration-expression-local":{match:"(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)\\]])",captures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.local.cs"}}},"declaration-expression-tuple":{match:"(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)])",captures:{"1":{name:"keyword.other.var.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.tuple-element.cs"}}},"checked-unchecked-expression":{begin:"(?<!\\.)\\b(?:(checked)|(unchecked))\\b\\s*(\\()",beginCaptures:{"1":{name:"keyword.other.checked.cs"},"2":{name:"keyword.other.unchecked.cs"},"3":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"typeof-or-default-expression":{begin:"(?<!\\.)\\b(?:(typeof)|(default))\\b\\s*(\\()",beginCaptures:{"1":{name:"keyword.other.typeof.cs"},"2":{name:"keyword.other.default.cs"},"3":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#type"}]},"nameof-expression":{begin:"(?<!\\.)\\b(nameof)\\b\\s*(\\()",beginCaptures:{"1":{name:"keyword.other.nameof.cs"},"2":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"throw-expression":{match:"(?<!\\.)\\b(throw)\\b",captures:{"1":{name:"keyword.control.flow.throw.cs"}}},"interpolated-string":{name:"string.quoted.double.cs",begin:"\\$\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"(\")|((?:[^\\\\\\n])$)",endCaptures:{"1":{name:"punctuation.definition.string.end.cs"},"2":{name:"invalid.illegal.newline.cs"}},patterns:[{include:"#string-character-escape"},{include:"#interpolation"}]},"verbatim-interpolated-string":{name:"string.quoted.double.cs",begin:"(?:\\$@|@\\$)\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"\"(?=[^\"])",endCaptures:{"0":{name:"punctuation.definition.string.end.cs"}},patterns:[{include:"#verbatim-string-character-escape"},{include:"#interpolation"}]},interpolation:{name:"meta.interpolation.cs",begin:"(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",beginCaptures:{"1":{name:"string.quoted.double.cs"},"2":{name:"punctuation.definition.interpolation.begin.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.definition.interpolation.end.cs"}},patterns:[{include:"#expression"}]},literal:{patterns:[{include:"#boolean-literal"},{include:"#null-literal"},{include:"#numeric-literal"},{include:"#char-literal"},{include:"#string-literal"},{include:"#verbatim-string-literal"},{include:"#tuple-literal"}]},"boolean-literal":{patterns:[{name:"constant.language.boolean.true.cs",match:"(?<!\\.)\\btrue\\b"},{name:"constant.language.boolean.false.cs",match:"(?<!\\.)\\bfalse\\b"}]},"null-literal":{name:"constant.language.null.cs",match:"(?<!\\.)\\bnull\\b"},"numeric-literal":{match:"(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|_)|(?<=[eE])[+-])*",captures:{"0":{patterns:[{begin:"(?=.)",end:"$",patterns:[{match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?:(?<=[0-9])|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?([fFdDmM](?!\\w))?$",captures:{"2":{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"3":{name:"constant.numeric.other.separator.thousands.cs"},"4":{name:"constant.numeric.other.separator.decimals.cs"},"5":{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"6":{name:"constant.numeric.other.separator.thousands.cs"},"8":{name:"constant.numeric.other.exponent.cs"},"9":{name:"keyword.operator.arithmetic.cs"},"10":{name:"keyword.operator.arithmetic.cs"},"11":{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"12":{name:"constant.numeric.other.suffix.cs"}}},{match:"(\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",captures:{"1":{name:"constant.numeric.other.preffix.binary.cs"},"2":{name:"constant.numeric.binary.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"3":{name:"constant.numeric.other.separator.thousands.cs"},"4":{name:"constant.numeric.other.suffix.cs"}}},{match:"(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",captures:{"1":{name:"constant.numeric.other.preffix.hex.cs"},"2":{name:"constant.numeric.hex.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"3":{name:"constant.numeric.other.separator.thousands.cs"},"4":{name:"constant.numeric.other.suffix.cs"}}},{match:"(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",captures:{"2":{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"3":{name:"constant.numeric.other.separator.thousands.cs"},"5":{name:"constant.numeric.other.exponent.cs"},"6":{name:"keyword.operator.arithmetic.cs"},"7":{name:"keyword.operator.arithmetic.cs"},"8":{name:"constant.numeric.decimal.cs",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"constant.numeric.other.separator.thousands.cs"}]},"9":{name:"constant.numeric.other.suffix.cs"}}},{match:"(?:(?:[0-9a-zA-Z_\\.]|_)|(?<=[eE])[+-])+",name:"invalid.illegal.constant.numeric.cs"}]}]}}},"char-literal":{name:"string.quoted.single.cs",begin:"'",beginCaptures:{"0":{name:"punctuation.definition.char.begin.cs"}},end:"(\\')|((?:[^\\\\\\n])$)",endCaptures:{"1":{name:"punctuation.definition.char.end.cs"},"2":{name:"invalid.illegal.newline.cs"}},patterns:[{include:"#char-character-escape"}]},"char-character-escape":{name:"constant.character.escape.cs",match:"\\\\(['\"\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4})"},"string-literal":{name:"string.quoted.double.cs",begin:"(?<!@)\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"(\")|((?:[^\\\\\\n])$)",endCaptures:{"1":{name:"punctuation.definition.string.end.cs"},"2":{name:"invalid.illegal.newline.cs"}},patterns:[{include:"#string-character-escape"}]},"string-character-escape":{name:"constant.character.escape.cs",match:"\\\\(['\"\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4})"},"verbatim-string-literal":{name:"string.quoted.double.cs",begin:"@\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"\"(?=[^\"])",endCaptures:{"0":{name:"punctuation.definition.string.end.cs"}},patterns:[{include:"#verbatim-string-character-escape"}]},"verbatim-string-character-escape":{name:"constant.character.escape.cs",match:"\"\""},"tuple-literal":{begin:"(\\()(?=.*[:,])",beginCaptures:{"1":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#tuple-literal-element"},{include:"#expression"},{include:"#punctuation-comma"}]},"tuple-literal-element":{begin:"(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n(?=:)",beginCaptures:{"1":{name:"entity.name.variable.tuple-element.cs"}},end:"(:)",endCaptures:{"0":{name:"punctuation.separator.colon.cs"}}},"expression-operators":{patterns:[{name:"keyword.operator.assignment.compound.cs",match:"\\*=|/=|%=|\\+=|-=|\\?\\?="},{name:"keyword.operator.assignment.compound.bitwise.cs",match:"\\&=|\\^=|<<=|>>=|\\|="},{name:"keyword.operator.bitwise.shift.cs",match:"<<|>>"},{name:"keyword.operator.comparison.cs",match:"==|!="},{name:"keyword.operator.relational.cs",match:"<=|>=|<|>"},{name:"keyword.operator.logical.cs",match:"\\!|&&|\\|\\|"},{name:"keyword.operator.bitwise.cs",match:"\\&|~|\\^|\\|"},{name:"keyword.operator.assignment.cs",match:"\\="},{name:"keyword.operator.decrement.cs",match:"--"},{name:"keyword.operator.increment.cs",match:"\\+\\+"},{name:"keyword.operator.arithmetic.cs",match:"%|\\*|/|-|\\+"},{name:"keyword.operator.null-coalescing.cs",match:"\\?\\?"}]},"switch-literal":{name:"constant.language.null.cs",match:"(?<!\\.)\\bnull\\b",beginCaptures:{"1":{name:"constant.language.null.cs"}},patterns:[{include:"#comment"},{include:"#punctuation-comma"},{include:"#expression-body"}]},"conditional-operator":{begin:"\\?(?!\\s*[?.\\[]|\\s*$)",beginCaptures:{"0":{name:"keyword.operator.conditional.question-mark.cs"}},end:":",endCaptures:{"0":{name:"keyword.operator.conditional.colon.cs"}},patterns:[{include:"#expression"}]},"await-expression":{name:"keyword.other.await.cs",match:"(?!\\.)\\b(await)\\b"},"parenthesized-expression":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#expression"}]},"initializer-expression":{begin:"\\{",beginCaptures:{"0":{name:"punctuation.curlybrace.open.cs"}},end:"\\}",endCaptures:{"0":{name:"punctuation.curlybrace.close.cs"}},patterns:[{include:"#expression"},{include:"#punctuation-comma"}]},identifier:{name:"variable.other.readwrite.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"},"cast-expression":{match:"(?x)\n(\\()\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])",captures:{"1":{name:"punctuation.parenthesis.open.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"punctuation.parenthesis.close.cs"}}},"as-expression":{match:"(?x)\n(?<!\\.)\\b(as)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?",captures:{"1":{name:"keyword.other.as.cs"},"2":{patterns:[{include:"#type"}]}}},"is-expression":{match:"(?x)\n(?<!\\.)\\b(is)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?",captures:{"1":{name:"keyword.other.is.cs"},"2":{patterns:[{include:"#type"}]}}},"this-or-base-expression":{match:"\\b(?:(base)|(this))\\b",captures:{"1":{name:"keyword.other.base.cs"},"2":{name:"keyword.other.this.cs"}}},"invocation-expression":{begin:"(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?<type_args>\\s*<([^<>]|\\g<type_args>)+>\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list",beginCaptures:{"1":{name:"keyword.operator.null-conditional.cs"},"2":{name:"punctuation.accessor.cs"},"3":{name:"entity.name.function.cs"},"4":{patterns:[{include:"#type-arguments"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"element-access-expression":{begin:"(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",beginCaptures:{"1":{name:"keyword.operator.null-conditional.cs"},"2":{name:"punctuation.accessor.cs"},"3":{name:"variable.other.object.property.cs"},"4":{name:"keyword.operator.null-conditional.cs"}},end:"(?<=\\])(?!\\s*\\[)",patterns:[{include:"#bracketed-argument-list"}]},"member-access-expression":{patterns:[{match:"(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(\\.)\\s* # preceding dot\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|<) # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[",captures:{"1":{name:"keyword.operator.null-conditional.cs"},"2":{name:"punctuation.accessor.cs"},"3":{name:"variable.other.object.property.cs"}}},{match:"(?x)\n(\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?<type_params>\\s*<([^<>]|\\g<type_params>)+>\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",captures:{"1":{name:"punctuation.accessor.cs"},"2":{name:"variable.other.object.cs"},"3":{patterns:[{include:"#type-arguments"}]}}},{match:"(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",captures:{"1":{name:"variable.other.object.cs"}}}]},"object-creation-expression":{patterns:[{include:"#object-creation-expression-with-parameters"},{include:"#object-creation-expression-with-no-parameters"}]},"object-creation-expression-with-parameters":{begin:"(?x)\n(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\()",beginCaptures:{"1":{name:"keyword.other.new.cs"},"2":{patterns:[{include:"#type"}]}},end:"(?<=\\))",patterns:[{include:"#argument-list"}]},"object-creation-expression-with-no-parameters":{match:"(?x)\n(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\{|$)",captures:{"1":{name:"keyword.other.new.cs"},"2":{patterns:[{include:"#type"}]}}},"array-creation-expression":{begin:"(?x)\n\\b(new|stackalloc)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\\s*\n(?=\\[)",beginCaptures:{"1":{name:"keyword.other.new.cs"},"2":{patterns:[{include:"#type"}]}},end:"(?<=\\])",patterns:[{include:"#bracketed-argument-list"}]},"anonymous-object-creation-expression":{begin:"\\b(new)\\b\\s*(?=\\{|$)",beginCaptures:{"1":{name:"keyword.other.new.cs"}},end:"(?<=\\})",patterns:[{include:"#initializer-expression"}]},"bracketed-parameter-list":{begin:"(?=(\\[))",beginCaptures:{"1":{name:"punctuation.squarebracket.open.cs"}},end:"(?=(\\]))",endCaptures:{"1":{name:"punctuation.squarebracket.close.cs"}},patterns:[{begin:"(?<=\\[)",end:"(?=\\])",patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]}]},"parenthesized-parameter-list":{begin:"(\\()",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"(\\))",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#parameter"},{include:"#punctuation-comma"},{include:"#variable-initializer"}]},parameter:{match:"(?x)\n(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?\n(?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)",captures:{"1":{name:"storage.modifier.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.parameter.cs"}}},"argument-list":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#named-argument"},{include:"#argument"},{include:"#punctuation-comma"}]},"bracketed-argument-list":{begin:"\\[",beginCaptures:{"0":{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{"0":{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#named-argument"},{include:"#argument"},{include:"#punctuation-comma"}]},"named-argument":{begin:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",beginCaptures:{"1":{name:"entity.name.variable.parameter.cs"},"2":{name:"punctuation.separator.colon.cs"}},end:"(?=(,|\\)|\\]))",patterns:[{include:"#argument"}]},argument:{patterns:[{name:"storage.modifier.cs",match:"\\b(ref|out|in)\\b"},{include:"#declaration-expression-local"},{include:"#expression"}]},"query-expression":{begin:"(?x)\n\\b(from)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.from.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.range-variable.cs"},"8":{name:"keyword.query.in.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"query-body":{patterns:[{include:"#let-clause"},{include:"#where-clause"},{include:"#join-clause"},{include:"#orderby-clause"},{include:"#select-clause"},{include:"#group-clause"}]},"let-clause":{begin:"(?x)\n\\b(let)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=)\\s*",beginCaptures:{"1":{name:"keyword.query.let.cs"},"2":{name:"entity.name.variable.range-variable.cs"},"3":{name:"keyword.operator.assignment.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"where-clause":{begin:"(?x)\n\\b(where)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.where.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"join-clause":{begin:"(?x)\n\\b(join)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.join.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.range-variable.cs"},"8":{name:"keyword.query.in.cs"}},end:"(?=;|\\))",patterns:[{include:"#join-on"},{include:"#join-equals"},{include:"#join-into"},{include:"#query-body"},{include:"#expression"}]},"join-on":{match:"\\b(on)\\b\\s*",captures:{"1":{name:"keyword.query.on.cs"}}},"join-equals":{match:"\\b(equals)\\b\\s*",captures:{"1":{name:"keyword.query.equals.cs"}}},"join-into":{match:"(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",captures:{"1":{name:"keyword.query.into.cs"},"2":{name:"entity.name.variable.range-variable.cs"}}},"orderby-clause":{begin:"\\b(orderby)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.orderby.cs"}},end:"(?=;|\\))",patterns:[{include:"#ordering-direction"},{include:"#query-body"},{include:"#expression"},{include:"#punctuation-comma"}]},"ordering-direction":{match:"\\b(?:(ascending)|(descending))\\b",captures:{"1":{name:"keyword.query.ascending.cs"},"2":{name:"keyword.query.descending.cs"}}},"select-clause":{begin:"\\b(select)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.select.cs"}},end:"(?=;|\\))",patterns:[{include:"#query-body"},{include:"#expression"}]},"group-clause":{begin:"\\b(group)\\b\\s*",beginCaptures:{"1":{name:"keyword.query.group.cs"}},end:"(?=;|\\))",patterns:[{include:"#group-by"},{include:"#group-into"},{include:"#query-body"},{include:"#expression"}]},"group-by":{match:"\\b(by)\\b\\s*",captures:{"1":{name:"keyword.query.by.cs"}}},"group-into":{match:"(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",captures:{"1":{name:"keyword.query.into.cs"},"2":{name:"entity.name.variable.range-variable.cs"}}},"anonymous-method-expression":{patterns:[{begin:"(?x)\n(?:\\b(async)\\b\\s*)?\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=>)",beginCaptures:{"1":{name:"storage.modifier.cs"},"2":{name:"entity.name.variable.parameter.cs"},"3":{name:"keyword.operator.arrow.cs"}},end:"(?=\\)|;|}|,)",patterns:[{include:"#block"},{include:"#ref-modifier"},{include:"#expression"}]},{begin:"(?x)\n(?:\\b(async)\\b\\s*)?\n(\\(.*?\\))\\s*\n(=>)",beginCaptures:{"1":{name:"storage.modifier.cs"},"2":{patterns:[{include:"#lambda-parameter-list"}]},"3":{name:"keyword.operator.arrow.cs"}},end:"(?=\\)|;|}|,)",patterns:[{include:"#block"},{include:"#ref-modifier"},{include:"#expression"}]},{begin:"(?x)\n(?:\\b(async)\\b\\s*)?\n(?:\\b(delegate)\\b\\s*)",beginCaptures:{"1":{name:"storage.modifier.cs"},"2":{name:"keyword.other.delegate.cs"}},end:"(?=\\)|;|}|,)",patterns:[{include:"#parenthesized-parameter-list"},{include:"#block"},{include:"#expression"}]}]},"lambda-parameter-list":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#comment"},{include:"#attribute-section"},{include:"#lambda-parameter"},{include:"#punctuation-comma"}]},"lambda-parameter":{match:"(?x)\n(?:\\b(ref|out|in)\\b)?\\s*\n(?:(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+)?\n(\\g<identifier>)\\b\\s*\n(?=[,)])",captures:{"1":{name:"storage.modifier.cs"},"2":{patterns:[{include:"#type"}]},"7":{name:"entity.name.variable.parameter.cs"}}},type:{name:"meta.type.cs",patterns:[{include:"#comment"},{include:"#ref-modifier"},{include:"#readonly-modifier"},{include:"#tuple-type"},{include:"#type-builtin"},{include:"#type-name"},{include:"#type-arguments"},{include:"#type-array-suffix"},{include:"#type-nullable-suffix"}]},"ref-modifier":{name:"storage.modifier.cs",match:"\\b(ref)\\b"},"readonly-modifier":{name:"storage.modifier.cs",match:"\\b(readonly)\\b"},"tuple-type":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#tuple-element"},{include:"#punctuation-comma"}]},"tuple-element":{match:"(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\n(?:(?<tuple_name>\\g<identifier>)\\b)?",captures:{"1":{patterns:[{include:"#type"}]},"6":{name:"entity.name.variable.tuple-element.cs"}}},"type-builtin":{match:"\\b(bool|byte|char|decimal|double|float|int|long|object|sbyte|short|string|uint|ulong|ushort|void|dynamic)\\b",captures:{"1":{name:"keyword.type.cs"}}},"type-name":{patterns:[{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",captures:{"1":{name:"entity.name.type.alias.cs"},"2":{name:"punctuation.separator.coloncolon.cs"}}},{match:"(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",captures:{"1":{name:"entity.name.type.cs"},"2":{name:"punctuation.accessor.cs"}}},{match:"(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)",captures:{"1":{name:"punctuation.accessor.cs"},"2":{name:"entity.name.type.cs"}}},{name:"entity.name.type.cs",match:"@?[_[:alpha:]][_[:alnum:]]*"}]},"type-arguments":{begin:"<",beginCaptures:{"0":{name:"punctuation.definition.typeparameters.begin.cs"}},end:">",endCaptures:{"0":{name:"punctuation.definition.typeparameters.end.cs"}},patterns:[{include:"#comment"},{include:"#type"},{include:"#punctuation-comma"}]},"type-array-suffix":{begin:"\\[",beginCaptures:{"0":{name:"punctuation.squarebracket.open.cs"}},end:"\\]",endCaptures:{"0":{name:"punctuation.squarebracket.close.cs"}},patterns:[{include:"#punctuation-comma"}]},"type-nullable-suffix":{match:"\\?",captures:{"0":{name:"punctuation.separator.question-mark.cs"}}},"operator-assignment":{name:"keyword.operator.assignment.cs",match:"(?<!=|!)(=)(?!=)"},"punctuation-comma":{name:"punctuation.separator.comma.cs",match:","},"punctuation-semicolon":{name:"punctuation.terminator.statement.cs",match:";"},"punctuation-accessor":{name:"punctuation.accessor.cs",match:"\\."},preprocessor:{name:"meta.preprocessor.cs",begin:"^\\s*(\\#)\\s*",beginCaptures:{"1":{name:"punctuation.separator.hash.cs"}},end:"(?<=$)",patterns:[{include:"#comment"},{include:"#preprocessor-define-or-undef"},{include:"#preprocessor-if-or-elif"},{include:"#preprocessor-else-or-endif"},{include:"#preprocessor-warning-or-error"},{include:"#preprocessor-region"},{include:"#preprocessor-endregion"},{include:"#preprocessor-load"},{include:"#preprocessor-r"},{include:"#preprocessor-line"},{include:"#preprocessor-pragma-warning"},{include:"#preprocessor-pragma-checksum"}]},"preprocessor-define-or-undef":{match:"\\b(?:(define)|(undef))\\b\\s*\\b([_[:alpha:]][_[:alnum:]]*)\\b",captures:{"1":{name:"keyword.preprocessor.define.cs"},"2":{name:"keyword.preprocessor.undef.cs"},"3":{name:"entity.name.variable.preprocessor.symbol.cs"}}},"preprocessor-if-or-elif":{begin:"\\b(?:(if)|(elif))\\b",beginCaptures:{"1":{name:"keyword.preprocessor.if.cs"},"2":{name:"keyword.preprocessor.elif.cs"}},end:"(?=$)",patterns:[{include:"#comment"},{include:"#preprocessor-expression"}]},"preprocessor-else-or-endif":{match:"\\b(?:(else)|(endif))\\b",captures:{"1":{name:"keyword.preprocessor.else.cs"},"2":{name:"keyword.preprocessor.endif.cs"}}},"preprocessor-warning-or-error":{match:"\\b(?:(warning)|(error))\\b\\s*(.*)(?=$)",captures:{"1":{name:"keyword.preprocessor.warning.cs"},"2":{name:"keyword.preprocessor.error.cs"},"3":{name:"string.unquoted.preprocessor.message.cs"}}},"preprocessor-load":{begin:"\\b(load)\\b",beginCaptures:{"1":{name:"keyword.preprocessor.load.cs"}},end:"(?=$)",patterns:[{match:"\\\"[^\"]*\\\"",captures:{"0":{name:"string.quoted.double.cs"}}}]},"preprocessor-r":{begin:"\\b(r)\\b",beginCaptures:{"1":{name:"keyword.preprocessor.r.cs"}},end:"(?=$)",patterns:[{match:"\\\"[^\"]*\\\"",captures:{"0":{name:"string.quoted.double.cs"}}}]},"preprocessor-region":{match:"\\b(region)\\b\\s*(.*)(?=$)",captures:{"1":{name:"keyword.preprocessor.region.cs"},"2":{name:"string.unquoted.preprocessor.message.cs"}}},"preprocessor-endregion":{match:"\\b(endregion)\\b",captures:{"1":{name:"keyword.preprocessor.endregion.cs"}}},"preprocessor-line":{begin:"\\b(line)\\b",beginCaptures:{"1":{name:"keyword.preprocessor.line.cs"}},end:"(?=$)",patterns:[{match:"\\b(?:(default|hidden))",captures:{"1":{name:"keyword.preprocessor.default.cs"},"2":{name:"keyword.preprocessor.hidden.cs"}}},{match:"[0-9]+",captures:{"0":{name:"constant.numeric.decimal.cs"}}},{match:"\\\"[^\"]*\\\"",captures:{"0":{name:"string.quoted.double.cs"}}}]},"preprocessor-pragma-warning":{match:"\\b(pragma)\\b\\s*\\b(warning)\\b\\s*\\b(?:(disable)|(restore))\\b(\\s*[0-9]+(?:\\s*,\\s*[0-9]+)?)?",captures:{"1":{name:"keyword.preprocessor.pragma.cs"},"2":{name:"keyword.preprocessor.warning.cs"},"3":{name:"keyword.preprocessor.disable.cs"},"4":{name:"keyword.preprocessor.restore.cs"},"5":{patterns:[{match:"[0-9]+",captures:{"0":{name:"constant.numeric.decimal.cs"}}},{include:"#punctuation-comma"}]}}},"preprocessor-pragma-checksum":{match:"\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")",captures:{"1":{name:"keyword.preprocessor.pragma.cs"},"2":{name:"keyword.preprocessor.checksum.cs"},"3":{name:"string.quoted.double.cs"},"4":{name:"string.quoted.double.cs"},"5":{name:"string.quoted.double.cs"}}},"preprocessor-expression":{patterns:[{begin:"\\(",beginCaptures:{"0":{name:"punctuation.parenthesis.open.cs"}},end:"\\)",endCaptures:{"0":{name:"punctuation.parenthesis.close.cs"}},patterns:[{include:"#preprocessor-expression"}]},{match:"\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\b",captures:{"1":{name:"constant.language.boolean.true.cs"},"2":{name:"constant.language.boolean.false.cs"},"3":{name:"entity.name.variable.preprocessor.symbol.cs"}}},{match:"(==|!=)|(\\!|&&|\\|\\|)",captures:{"1":{name:"keyword.operator.comparison.cs"},"2":{name:"keyword.operator.logical.cs"}}}]},comment:{patterns:[{name:"comment.block.cs",begin:"/\\*",beginCaptures:{"0":{name:"punctuation.definition.comment.cs"}},end:"\\*/",endCaptures:{"0":{name:"punctuation.definition.comment.cs"}}},{begin:"(^\\s+)?(?=//)",beginCaptures:{"1":{name:"punctuation.whitespace.comment.leading.cs"}},end:"(?=$)",patterns:[{name:"comment.block.documentation.cs",begin:"(?<!/)///(?!/)",beginCaptures:{"0":{name:"punctuation.definition.comment.cs"}},end:"(?=$)",patterns:[{include:"#xml-doc-comment"}]},{name:"comment.line.double-slash.cs",begin:"(?<!/)//(?:(?!/)|(?=//))",beginCaptures:{"0":{name:"punctuation.definition.comment.cs"}},end:"(?=$)"}]}]},"xml-doc-comment":{patterns:[{include:"#xml-comment"},{include:"#xml-character-entity"},{include:"#xml-cdata"},{include:"#xml-tag"}]},"xml-tag":{name:"meta.tag.cs",begin:"(?x)\n(</?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)",beginCaptures:{"1":{name:"punctuation.definition.tag.cs"},"2":{name:"entity.name.tag.cs"},"3":{name:"entity.name.tag.namespace.cs"},"4":{name:"punctuation.separator.colon.cs"},"5":{name:"entity.name.tag.localname.cs"}},end:"(/?>)",endCaptures:{"1":{name:"punctuation.definition.tag.cs"}},patterns:[{include:"#xml-attribute"}]},"xml-attribute":{patterns:[{match:"(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)",captures:{"1":{name:"entity.other.attribute-name.cs"},"2":{name:"entity.other.attribute-name.namespace.cs"},"3":{name:"punctuation.separator.colon.cs"},"4":{name:"entity.other.attribute-name.localname.cs"},"5":{name:"punctuation.separator.equals.cs"}}},{include:"#xml-string"}]},"xml-cdata":{name:"string.unquoted.cdata.cs",begin:"<!\\[CDATA\\[",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"\\]\\]>",endCaptures:{"0":{name:"punctuation.definition.string.end.cs"}}},"xml-string":{patterns:[{name:"string.quoted.single.cs",begin:"\\'",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"\\'",endCaptures:{"0":{name:"punctuation.definition.string.end.cs"}},patterns:[{include:"#xml-character-entity"}]},{name:"string.quoted.double.cs",begin:"\\\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.cs"}},end:"\\\"",endCaptures:{"0":{name:"punctuation.definition.string.end.cs"}},patterns:[{include:"#xml-character-entity"}]}]},"xml-character-entity":{patterns:[{name:"constant.character.entity.cs",match:"(?x)\n(&)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)",captures:{"1":{name:"punctuation.definition.constant.cs"},"3":{name:"punctuation.definition.constant.cs"}}},{name:"invalid.illegal.bad-ampersand.cs",match:"&"}]},"xml-comment":{name:"comment.block.cs",begin:"<!--",beginCaptures:{"0":{name:"punctuation.definition.comment.cs"}},end:"-->",endCaptures:{"0":{name:"punctuation.definition.comment.cs"}}}};var csharp_tmLanguage = {information_for_contributors:information_for_contributors,version:version,name:name,scopeName:scopeName,patterns:patterns,repository:repository};
|
|
6
6
|
|
|
7
|
-
exports
|
|
7
|
+
exports.default = csharp_tmLanguage;
|
|
8
8
|
exports.information_for_contributors = information_for_contributors;
|
|
9
9
|
exports.name = name;
|
|
10
10
|
exports.patterns = patterns;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const information_for_contributors=["This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."];const version="https://github.com/atom/language-css/commit/4a6dc90f332bfa72c88192513435a64013d9aad4";const name="CSS";const scopeName="source.css";const patterns=[{include:"#comment-block"},{include:"#escapes"},{include:"#combinators"},{include:"#selector"},{include:"#at-rules"},{include:"#rule-list"}];const repository={"at-rules":{patterns:[{begin:"\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))",end:";|(?=$)",endCaptures:{"0":{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.charset.css",patterns:[{captures:{"1":{name:"invalid.illegal.not-lowercase.charset.css"},"2":{name:"invalid.illegal.leading-whitespace.charset.css"},"3":{name:"invalid.illegal.no-whitespace.charset.css"},"4":{name:"invalid.illegal.whitespace.charset.css"},"5":{name:"invalid.illegal.not-double-quoted.charset.css"},"6":{name:"invalid.illegal.unclosed-string.charset.css"},"7":{name:"invalid.illegal.unexpected-characters.charset.css"}},match:"(?x) # Possible errors:\n\\G\n((?!@charset)@\\w+) # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+) # Preceding whitespace\n|\n(@charset\\S[^;]*) # No whitespace after @charset\n|\n(?<=@charset) # Before quoted charset name\n(\\x20{2,}|\\t+) # More than one space used, or a tab\n|\n(?<=@charset\\x20) # Beginning of charset name\n([^\";]+) # Not double-quoted\n|\n(\"[^\"]+$) # Unclosed quote\n|\n(?<=\") # After charset name\n([^;]+) # Unexpected junk instead of semicolon"},{captures:{"1":{name:"keyword.control.at-rule.charset.css"},"2":{name:"punctuation.definition.keyword.css"}},match:"((@)charset)(?=\\s)"},{begin:"\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.css"}},end:"\"|$",endCaptures:{"0":{name:"punctuation.definition.string.end.css"}},name:"string.quoted.double.css",patterns:[{begin:"(?:\\G|^)(?=(?:[^\"])+$)",end:"$",name:"invalid.illegal.unclosed.string.css"}]}]},{begin:"(?i)((@)import)(?:\\s+|$|(?=['\"]|/\\*))",beginCaptures:{"1":{name:"keyword.control.at-rule.import.css"},"2":{name:"punctuation.definition.keyword.css"}},end:";",endCaptures:{"0":{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.import.css",patterns:[{begin:"\\G\\s*(?=/\\*)",end:"(?<=\\*/)\\s*",patterns:[{include:"#comment-block"}]},{include:"#string"},{include:"#url"},{include:"#media-query-list"}]},{begin:"(?i)((@)font-face)(?=\\s*|{|/\\*|$)",beginCaptures:{"1":{name:"keyword.control.at-rule.font-face.css"},"2":{name:"punctuation.definition.keyword.css"}},end:"(?!\\G)",name:"meta.at-rule.font-face.css",patterns:[{include:"#comment-block"},{include:"#escapes"},{include:"#rule-list"}]},{begin:"(?i)(@)page(?=[\\s:{]|/\\*|$)",captures:{"0":{name:"keyword.control.at-rule.page.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*($|[:{;]))",name:"meta.at-rule.page.css",patterns:[{include:"#rule-list"}]},{begin:"(?i)(?=@media(\\s|\\(|/\\*|$))",end:"(?<=})(?!\\G)",patterns:[{begin:"(?i)\\G(@)media",beginCaptures:{"0":{name:"keyword.control.at-rule.media.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*[{;])",name:"meta.at-rule.media.header.css",patterns:[{include:"#media-query-list"}]},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.media.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.media.end.bracket.curly.css"}},name:"meta.at-rule.media.body.css",patterns:[{include:"$self"}]}]},{begin:"(?i)(?=@counter-style([\\s'\"{;]|/\\*|$))",end:"(?<=})(?!\\G)",patterns:[{begin:"(?i)\\G(@)counter-style",beginCaptures:{"0":{name:"keyword.control.at-rule.counter-style.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*{)",name:"meta.at-rule.counter-style.header.css",patterns:[{include:"#comment-block"},{include:"#escapes"},{captures:{"0":{patterns:[{include:"#escapes"}]}},match:"(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",name:"variable.parameter.style-name.css"}]},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.property-list.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.property-list.end.bracket.curly.css"}},name:"meta.at-rule.counter-style.body.css",patterns:[{include:"#comment-block"},{include:"#escapes"},{include:"#rule-list-innards"}]}]},{begin:"(?i)(?=@document([\\s'\"{;]|/\\*|$))",end:"(?<=})(?!\\G)",patterns:[{begin:"(?i)\\G(@)document",beginCaptures:{"0":{name:"keyword.control.at-rule.document.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*[{;])",name:"meta.at-rule.document.header.css",patterns:[{begin:"(?i)(?<![\\w-])(url-prefix|domain|regexp)(\\()",beginCaptures:{"1":{name:"support.function.document-rule.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.document-rule.css",patterns:[{include:"#string"},{include:"#comment-block"},{include:"#escapes"},{match:"[^'\")\\s]+",name:"variable.parameter.document-rule.css"}]},{include:"#url"},{include:"#commas"},{include:"#comment-block"},{include:"#escapes"}]},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.document.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.document.end.bracket.curly.css"}},name:"meta.at-rule.document.body.css",patterns:[{include:"$self"}]}]},{begin:"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'\"{;]|/\\*|$))",end:"(?<=})(?!\\G)",patterns:[{begin:"(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes",beginCaptures:{"0":{name:"keyword.control.at-rule.keyframes.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*{)",name:"meta.at-rule.keyframes.header.css",patterns:[{include:"#comment-block"},{include:"#escapes"},{captures:{"0":{patterns:[{include:"#escapes"}]}},match:"(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",name:"variable.parameter.keyframe-list.css"}]},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.keyframes.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.keyframes.end.bracket.curly.css"}},name:"meta.at-rule.keyframes.body.css",patterns:[{include:"#comment-block"},{include:"#escapes"},{captures:{"1":{name:"entity.other.keyframe-offset.css"},"2":{name:"entity.other.keyframe-offset.percentage.css"}},match:"(?xi)\n(?<![\\w-]) (from|to) (?![\\w-]) # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%) # Percentile value"},{include:"#rule-list"}]}]},{begin:"(?i)(?=@supports(\\s|\\(|/\\*|$))",end:"(?<=})(?!\\G)|(?=;)",patterns:[{begin:"(?i)\\G(@)supports",beginCaptures:{"0":{name:"keyword.control.at-rule.supports.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*[{;])",name:"meta.at-rule.supports.header.css",patterns:[{include:"#feature-query-operators"},{include:"#feature-query"},{include:"#comment-block"},{include:"#escapes"}]},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.supports.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.supports.end.bracket.curly.css"}},name:"meta.at-rule.supports.body.css",patterns:[{include:"$self"}]}]},{begin:"(?i)((@)(-(ms|o)-)?viewport)(?=[\\s'\"{;]|/\\*|$)",beginCaptures:{"1":{name:"keyword.control.at-rule.viewport.css"},"2":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*[@{;])",name:"meta.at-rule.viewport.css",patterns:[{include:"#comment-block"},{include:"#escapes"}]},{begin:"(?i)((@)font-feature-values)(?=[\\s'\"{;]|/\\*|$)\\s*",beginCaptures:{"1":{name:"keyword.control.at-rule.font-feature-values.css"},"2":{name:"punctuation.definition.keyword.css"}},contentName:"variable.parameter.font-name.css",end:"(?=\\s*[@{;])",name:"meta.at-rule.font-features.css",patterns:[{include:"#comment-block"},{include:"#escapes"}]},{include:"#font-features"},{begin:"(?i)((@)namespace)(?=[\\s'\";]|/\\*|$)",beginCaptures:{"1":{name:"keyword.control.at-rule.namespace.css"},"2":{name:"punctuation.definition.keyword.css"}},end:";|(?=[@{])",endCaptures:{"0":{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.namespace.css",patterns:[{include:"#url"},{captures:{"1":{patterns:[{include:"#comment-block"}]},"2":{name:"entity.name.function.namespace-prefix.css",patterns:[{include:"#escapes"}]}},match:"(?xi)\n(?:\\G|^|(?<=\\s))\n(?=\n (?<=\\s|^) # Starts with whitespace\n (?:[-a-zA-Z_]|[^\\x00-\\x7F]) # Then a valid identifier character\n |\n \\s* # Possible adjoining whitespace\n /\\*(?:[^*]|\\*[^/])*\\*/ # Injected comment\n)\n(.*?) # Grouped to embed #comment-block\n(\n (?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n)"},{include:"#comment-block"},{include:"#escapes"},{include:"#string"}]},{begin:"(?i)(?=@[\\w-]+[^;]+;s*$)",end:"(?<=;)(?!\\G)",patterns:[{begin:"(?i)\\G(@)[\\w-]+",beginCaptures:{"0":{name:"keyword.control.at-rule.css"},"1":{name:"punctuation.definition.keyword.css"}},end:";",endCaptures:{"0":{name:"punctuation.terminator.rule.css"}},name:"meta.at-rule.header.css"}]},{begin:"(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",end:"(?<=})(?!\\G)",patterns:[{begin:"(?i)\\G(@)[\\w-]+",beginCaptures:{"0":{name:"keyword.control.at-rule.css"},"1":{name:"punctuation.definition.keyword.css"}},end:"(?=\\s*[{;])",name:"meta.at-rule.header.css"},{begin:"{",beginCaptures:{"0":{name:"punctuation.section.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.end.bracket.curly.css"}},name:"meta.at-rule.body.css",patterns:[{include:"$self"}]}]}]},"color-keywords":{patterns:[{match:"(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",name:"support.constant.color.w3c-standard-color-name.css"},{match:"(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",name:"support.constant.color.w3c-extended-color-name.css"},{match:"(?i)(?<![\\w-])currentColor(?![\\w-])",name:"support.constant.color.current.css"},{match:"(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])",name:"invalid.deprecated.color.system.css"}]},combinators:{patterns:[{match:"/deep/|>>>",name:"invalid.deprecated.combinator.css"},{match:">>|>|\\+|~",name:"keyword.operator.combinator.css"}]},commas:{match:",",name:"punctuation.separator.list.comma.css"},"comment-block":{begin:"/\\*",beginCaptures:{"0":{name:"punctuation.definition.comment.begin.css"}},end:"\\*/",endCaptures:{"0":{name:"punctuation.definition.comment.end.css"}},name:"comment.block.css"},escapes:{patterns:[{match:"\\\\[0-9a-fA-F]{1,6}",name:"constant.character.escape.codepoint.css"},{begin:"\\\\$\\s*",end:"^(?<!\\G)",name:"constant.character.escape.newline.css"},{match:"\\\\.",name:"constant.character.escape.css"}]},"feature-query":{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.condition.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.condition.end.bracket.round.css"}},name:"meta.feature-query.css",patterns:[{include:"#feature-query-operators"},{include:"#feature-query"}]},"feature-query-operators":{patterns:[{match:"(?i)(?<=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)",name:"keyword.operator.logical.feature.$1.css"},{include:"#rule-list-innards"}]},"font-features":{begin:"(?xi)\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\n(?=[\\s@'\"{;]|/\\*|$)",beginCaptures:{"1":{name:"keyword.control.at-rule.${3:/downcase}.css"},"2":{name:"punctuation.definition.keyword.css"}},end:"(?<=})",name:"meta.at-rule.${3:/downcase}.css",patterns:[{begin:"{",beginCaptures:{"0":{name:"punctuation.section.property-list.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.property-list.end.bracket.curly.css"}},name:"meta.property-list.font-feature.css",patterns:[{captures:{"0":{patterns:[{include:"#escapes"}]}},match:"(?x)\n(?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",name:"variable.font-feature.css"},{include:"#rule-list-innards"}]}]},functions:{patterns:[{begin:"(?i)(?<![\\w-])(calc)(\\()",beginCaptures:{"1":{name:"support.function.calc.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.calc.css",patterns:[{match:"[*/]|(?<=\\s|^)[-+](?=\\s|$)",name:"keyword.operator.arithmetic.css"},{include:"#property-values"}]},{begin:"(?i)(?<![\\w-])(rgba?|hsla?|hwb|lab|lch)(\\()",beginCaptures:{"1":{name:"support.function.misc.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.color.css",patterns:[{include:"#property-values"}]},{begin:"(?xi) (?<![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()",beginCaptures:{"1":{name:"support.function.gradient.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.gradient.css",patterns:[{match:"(?i)(?<![\\w-])(from|to|at)(?![\\w-])",name:"keyword.operator.gradient.css"},{include:"#property-values"}]},{begin:"(?i)(?<![\\w-])(-webkit-gradient)(\\()",beginCaptures:{"1":{name:"invalid.deprecated.gradient.function.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.gradient.invalid.deprecated.gradient.css",patterns:[{begin:"(?i)(?<![\\w-])(from|to|color-stop)(\\()",beginCaptures:{"1":{name:"invalid.deprecated.function.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{include:"#property-values"}]},{include:"#property-values"}]},{begin:"(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",beginCaptures:{"1":{name:"support.function.misc.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.misc.css",patterns:[{match:"(?i)(?<=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)",name:"constant.numeric.other.density.css"},{include:"#property-values"},{match:"[^'\"),\\s]+",name:"variable.parameter.misc.css"}]},{begin:"(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",beginCaptures:{"1":{name:"support.function.shape.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.shape.css",patterns:[{match:"(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)",name:"keyword.operator.shape.css"},{include:"#property-values"}]},{begin:"(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",beginCaptures:{"1":{name:"support.function.timing-function.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.timing-function.css",patterns:[{match:"(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)",name:"support.constant.step-direction.css"},{include:"#property-values"}]},{begin:"(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",beginCaptures:{"1":{name:"support.function.transform.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{include:"#property-values"}]},{include:"#url"},{begin:"(?i)(?<![\\w-])(var)(\\()",beginCaptures:{"1":{name:"support.function.misc.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.variable.css",patterns:[{name:"variable.argument.css",match:"(?x)\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"},{include:"#property-values"}]}]},"functional-pseudo-classes":{patterns:[{begin:"(?i)((:)dir)(\\()",beginCaptures:{"1":{name:"entity.other.attribute-name.pseudo-class.css"},"2":{name:"punctuation.definition.entity.css"},"3":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{include:"#comment-block"},{include:"#escapes"},{match:"(?i)(?<![\\w-])(ltr|rtl)(?![\\w-])",name:"support.constant.text-direction.css"},{include:"#property-values"}]},{begin:"(?i)((:)lang)(\\()",beginCaptures:{"1":{name:"entity.other.attribute-name.pseudo-class.css"},"2":{name:"punctuation.definition.entity.css"},"3":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{match:"(?<=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])",name:"support.constant.language-range.css"},{begin:"\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.css"}},end:"\"",endCaptures:{"0":{name:"punctuation.definition.string.end.css"}},name:"string.quoted.double.css",patterns:[{include:"#escapes"},{match:"(?<=[\"\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\"\\s])",name:"support.constant.language-range.css"}]},{begin:"'",beginCaptures:{"0":{name:"punctuation.definition.string.begin.css"}},end:"'",endCaptures:{"0":{name:"punctuation.definition.string.end.css"}},name:"string.quoted.single.css",patterns:[{include:"#escapes"},{match:"(?<=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])",name:"support.constant.language-range.css"}]},{include:"#commas"}]},{begin:"(?i)((:)(?:not|has|matches))(\\()",beginCaptures:{"1":{name:"entity.other.attribute-name.pseudo-class.css"},"2":{name:"punctuation.definition.entity.css"},"3":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{include:"#selector-innards"}]},{begin:"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()",beginCaptures:{"1":{name:"entity.other.attribute-name.pseudo-class.css"},"2":{name:"punctuation.definition.entity.css"},"3":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},patterns:[{match:"(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?",name:"constant.numeric.css"},{match:"(?i)even|odd",name:"support.constant.parity.css"}]}]},"media-features":{captures:{"1":{name:"support.type.property-name.media.css"},"2":{name:"support.type.property-name.media.css"},"3":{name:"support.type.vendored.property-name.media.css"}},match:"(?xi)\n(?<=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n | hover\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[><:=]|\\)|/\\*) # Terminates cleanly"},"media-feature-keywords":{match:"(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n | hover\n)\n(?=\\s|\\)|$)",name:"support.constant.property-value.css"},"media-query":{begin:"\\G",end:"(?=\\s*[{;])",patterns:[{include:"#comment-block"},{include:"#escapes"},{include:"#media-types"},{match:"(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)",name:"keyword.operator.logical.$1.media.css"},{match:"(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)",name:"keyword.operator.logical.and.media.css"},{match:",(?:(?:\\s*,)+|(?=\\s*[;){]))",name:"invalid.illegal.comma.css"},{include:"#commas"},{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.parameters.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.parameters.end.bracket.round.css"}},patterns:[{include:"#media-features"},{include:"#media-feature-keywords"},{match:":",name:"punctuation.separator.key-value.css"},{match:">=|<=|=|<|>",name:"keyword.operator.comparison.css"},{captures:{"1":{name:"constant.numeric.css"},"2":{name:"keyword.operator.arithmetic.css"},"3":{name:"constant.numeric.css"}},match:"(\\d+)\\s*(/)\\s*(\\d+)",name:"meta.ratio.css"},{include:"#numeric-values"},{include:"#comment-block"}]}]},"media-query-list":{begin:"(?=\\s*[^{;])",end:"(?=\\s*[{;])",patterns:[{include:"#media-query"}]},"media-types":{captures:{"1":{name:"support.constant.media.css"},"2":{name:"invalid.deprecated.constant.media.css"}},match:"(?xi)\n(?<=^|\\s|,|\\*/)\n(?:\n # Valid media types\n (all|print|screen|speech)\n |\n # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)"},"numeric-values":{patterns:[{captures:{"1":{name:"punctuation.definition.constant.css"}},match:"(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",name:"constant.other.color.rgb-value.hex.css"},{captures:{"1":{name:"keyword.other.unit.percentage.css"},"2":{name:"keyword.other.unit.${2:/downcase}.css"}},match:"(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?<=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",name:"constant.numeric.css"}]},"property-keywords":{patterns:[{match:"(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\n(?![\\w-])",name:"support.constant.property-value.css"},{match:"(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])",name:"support.constant.property-value.list-style-type.css"},{match:"(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",name:"support.constant.vendored.property-value.css"},{match:"(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])",name:"support.constant.font-name.css"}]},"property-names":{patterns:[{match:"(?xi) (?<![\\w-])\n(?:\n # Standard CSS\n accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\n | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\n | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\n | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\n | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\n | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\n | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\n | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\n | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\n | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\n | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\n | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap\n | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|content|counter-increment\n | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\n | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\n | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\n | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\n | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\n | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\n | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\n | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\n | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\n | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\n | list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start\n | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\n | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\n | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\n | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\n | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\n | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\n | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\n | pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left\n | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\n | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\n | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\n | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\n | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\n | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\n | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\n | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\n | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\n | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\n | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style\n | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\n | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform\n | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\n | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\n | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n # SVG attributes\n | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n # Not listed on MDN; presumably deprecated\n | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])",name:"support.type.property-name.css"},{match:"(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",name:"support.type.vendored.property-name.css"}]},"property-values":{patterns:[{include:"#commas"},{include:"#comment-block"},{include:"#escapes"},{include:"#functions"},{include:"#property-keywords"},{include:"#unicode-range"},{include:"#numeric-values"},{include:"#color-keywords"},{include:"#string"},{match:"!\\s*important(?![\\w-])",name:"keyword.other.important.css"}]},"pseudo-classes":{captures:{"1":{name:"punctuation.definition.entity.css"},"2":{name:"invalid.illegal.colon.css"}},match:"(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\n | in-range|indeterminate|invalid|left|link|optional|out-of-range\n | read-only|read-write|required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])",name:"entity.other.attribute-name.pseudo-class.css"},"pseudo-elements":{captures:{"1":{name:"punctuation.definition.entity.css"},"2":{name:"punctuation.definition.entity.css"}},match:"(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])",name:"entity.other.attribute-name.pseudo-element.css"},"rule-list":{begin:"{",beginCaptures:{"0":{name:"punctuation.section.property-list.begin.bracket.curly.css"}},end:"}",endCaptures:{"0":{name:"punctuation.section.property-list.end.bracket.curly.css"}},name:"meta.property-list.css",patterns:[{include:"#rule-list-innards"}]},"rule-list-innards":{patterns:[{include:"#comment-block"},{include:"#escapes"},{include:"#font-features"},{match:"(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",name:"variable.css"},{begin:"(?<![-a-zA-Z])(?=[-a-zA-Z])",end:"$|(?![-a-zA-Z])",name:"meta.property-name.css",patterns:[{include:"#property-names"}]},{begin:"(:)\\s*",beginCaptures:{"1":{name:"punctuation.separator.key-value.css"}},end:"\\s*(;)|\\s*(?=}|\\))",endCaptures:{"1":{name:"punctuation.terminator.rule.css"}},contentName:"meta.property-value.css",patterns:[{include:"#comment-block"},{include:"#property-values"}]},{match:";",name:"punctuation.terminator.rule.css"}]},selector:{begin:"(?x)\n(?=\n (?:\\|)? # Possible anonymous namespace prefix\n (?:\n [-\\[:.*\\#a-zA-Z_] # Valid selector character\n |\n [^\\x00-\\x7F] # Which can include non-ASCII symbols\n |\n \\\\ # Or an escape sequence\n (?:[0-9a-fA-F]{1,6}|.)\n )\n)",end:"(?=\\s*[/@{)])",name:"meta.selector.css",patterns:[{include:"#selector-innards"}]},"selector-innards":{patterns:[{include:"#comment-block"},{include:"#commas"},{include:"#escapes"},{include:"#combinators"},{captures:{"1":{name:"entity.other.namespace-prefix.css"},"2":{name:"punctuation.separator.css"}},match:"(?x)\n(?:^|(?<=[\\s,(};])) # Follows whitespace, comma, semicolon, or bracket\n(?!\n [-\\w*]+\n \\|\n (?!\n [-\\[:.*\\#a-zA-Z_] # Make sure there's a selector to match\n | [^\\x00-\\x7F]\n )\n)\n(\n (?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n |\n \\* # Universal namespace\n)?\n(\\|) # Namespace separator"},{include:"#tag-names"},{match:"\\*",name:"entity.name.tag.wildcard.css"},{captures:{"1":{name:"punctuation.definition.entity.css"},"2":{patterns:[{include:"#escapes"}]}},match:"(?x) (?<![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n (?:\n # Starts with ASCII digits, with possible hyphen preceding it\n -?[0-9]\n |\n # Consists of a hyphen only\n - # Terminated by either:\n (?= $ # - End-of-line\n | [\\s,.\\#)\\[:{>+~|] # - Followed by another selector\n | /\\* # - Followed by a block comment\n )\n |\n # Name contains unescaped ASCII symbol\n (?: # Check for acceptable preceding characters\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Valid selector character\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n (?: # Invalid punctuation\n [!\"'%&(*;<?@^`|\\]}] # - NOTE: We exempt `)` from the list of checked\n | # symbols to avoid matching `:not(.invalid)`\n / (?!\\*) # - Avoid invalidating the start of a comment\n )+\n )\n # Mark remainder of selector invalid\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Otherwise valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n)",name:"invalid.illegal.bad-identifier.css"},{captures:{"1":{name:"punctuation.definition.entity.css"},"2":{patterns:[{include:"#escapes"}]}},match:"(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{>+~|] # - Another selector\n | /\\* # - A block comment\n)",name:"entity.other.attribute-name.class.css"},{captures:{"1":{name:"punctuation.definition.entity.css"},"2":{patterns:[{include:"#escapes"}]}},match:"(?x)\n(\\#)\n(\n -?\n (?![0-9])\n (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)",name:"entity.other.attribute-name.id.css"},{begin:"\\[",beginCaptures:{"0":{name:"punctuation.definition.entity.begin.bracket.square.css"}},end:"\\]",endCaptures:{"0":{name:"punctuation.definition.entity.end.bracket.square.css"}},name:"meta.attribute-selector.css",patterns:[{include:"#comment-block"},{include:"#string"},{captures:{"1":{name:"storage.modifier.ignore-case.css"}},match:"(?<=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)"},{captures:{"1":{name:"string.unquoted.attribute-value.css",patterns:[{include:"#escapes"}]}},match:"(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)"},{include:"#escapes"},{match:"[~|^$*]?=",name:"keyword.operator.pattern.css"},{match:"\\|",name:"punctuation.separator.css"},{captures:{"1":{name:"entity.other.namespace-prefix.css",patterns:[{include:"#escapes"}]}},match:"(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\x00-\\x7F]\n )\n)"},{captures:{"1":{name:"entity.other.attribute-name.css",patterns:[{include:"#escapes"}]}},match:"(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)"}]},{include:"#pseudo-classes"},{include:"#pseudo-elements"},{include:"#functional-pseudo-classes"},{match:"(?x) (?<![@\\w-])\n(?= # Custom element names must:\n [a-z] # - start with a lowercase ASCII letter,\n \\w* - # - contain at least one dash\n)\n(?:\n (?![A-Z]) # No uppercase ASCII letters are allowed\n [\\w-] # Allow any other word character or dash\n)+\n(?![(\\w-])",name:"entity.name.tag.custom.css"}]},string:{patterns:[{begin:"\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.css"}},end:"\"|(?<!\\\\)(?=$|\\n)",endCaptures:{"0":{name:"punctuation.definition.string.end.css"}},name:"string.quoted.double.css",patterns:[{begin:"(?:\\G|^)(?=(?:[^\\\\\"]|\\\\.)+$)",end:"$",name:"invalid.illegal.unclosed.string.css",patterns:[{include:"#escapes"}]},{include:"#escapes"}]},{begin:"'",beginCaptures:{"0":{name:"punctuation.definition.string.begin.css"}},end:"'|(?<!\\\\)(?=$|\\n)",endCaptures:{"0":{name:"punctuation.definition.string.end.css"}},name:"string.quoted.single.css",patterns:[{begin:"(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)",end:"$",name:"invalid.illegal.unclosed.string.css",patterns:[{include:"#escapes"}]},{include:"#escapes"}]}]},"tag-names":{match:"(?xi) (?<![\\w:-])\n(?:\n # HTML\n a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n | track|tt|u|ul|var|video|wbr|xmp\n\n # SVG\n | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n # MathML\n | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~>\\s,.\\#|){:\\[]|/\\*|$)",name:"entity.name.tag.css"},"unicode-range":{captures:{"0":{name:"constant.other.unicode-range.css"},"1":{name:"punctuation.separator.dash.unicode-range.css"}},match:"(?<![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])"},url:{begin:"(?i)(?<![\\w@-])(url)(\\()",beginCaptures:{"1":{name:"support.function.url.css"},"2":{name:"punctuation.section.function.begin.bracket.round.css"}},end:"\\)",endCaptures:{"0":{name:"punctuation.section.function.end.bracket.round.css"}},name:"meta.function.url.css",patterns:[{match:"[^'\")\\s]+",name:"variable.parameter.url.css"},{include:"#string"},{include:"#comment-block"},{include:"#escapes"}]}};var css_tmLanguage = {information_for_contributors:information_for_contributors,version:version,name:name,scopeName:scopeName,patterns:patterns,repository:repository};
|
|
6
6
|
|
|
7
|
-
exports
|
|
7
|
+
exports.default = css_tmLanguage;
|
|
8
8
|
exports.information_for_contributors = information_for_contributors;
|
|
9
9
|
exports.name = name;
|
|
10
10
|
exports.patterns = patterns;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const information_for_contributors=["This file has been converted from https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."];const version="https://github.com/dart-lang/dart-syntax-highlight/commit/9d4857e114b7000d94232d83187ad142961c678a";const name="Dart";const scopeName="source.dart";const patterns=[{name:"meta.preprocessor.script.dart",match:"^(#!.*)$"},{name:"meta.declaration.dart",begin:"^\\w*\\b(library|import|part of|part|export)\\b",beginCaptures:{"0":{name:"keyword.other.import.dart"}},end:";",endCaptures:{"0":{name:"punctuation.terminator.dart"}},patterns:[{include:"#strings"},{include:"#comments"},{name:"keyword.other.import.dart",match:"\\b(as|show|hide)\\b"},{name:"keyword.control.dart",match:"\\b(if)\\b"}]},{include:"#comments"},{include:"#punctuation"},{include:"#annotations"},{include:"#keywords"},{include:"#constants-and-special-vars"},{include:"#strings"}];const repository={dartdoc:{patterns:[{match:"(\\[.*?\\])",captures:{"0":{name:"variable.name.source.dart"}}},{match:"^ {4,}(?![ \\*]).*",captures:{"0":{name:"variable.name.source.dart"}}},{contentName:"variable.other.source.dart",begin:"```.*?$",end:"```"},{match:"(`.*?`)",captures:{"0":{name:"variable.other.source.dart"}}},{match:"(`.*?`)",captures:{"0":{name:"variable.other.source.dart"}}},{match:"(\\* (( ).*))$",captures:{"2":{name:"variable.other.source.dart"}}}]},comments:{patterns:[{name:"comment.block.empty.dart",match:"/\\*\\*/",captures:{"0":{name:"punctuation.definition.comment.dart"}}},{include:"#comments-doc-oldschool"},{include:"#comments-doc"},{include:"#comments-inline"}]},"comments-doc-oldschool":{patterns:[{name:"comment.block.documentation.dart",begin:"/\\*\\*",end:"\\*/",patterns:[{include:"#comments-doc-oldschool"},{include:"#comments-block"},{include:"#dartdoc"}]}]},"comments-doc":{patterns:[{name:"comment.block.documentation.dart",begin:"///","while":"^\\s*///",patterns:[{include:"#dartdoc"}]}]},"comments-inline":{patterns:[{include:"#comments-block"},{match:"((//).*)$",captures:{"1":{name:"comment.line.double-slash.dart"}}}]},"comments-block":{patterns:[{name:"comment.block.dart",begin:"/\\*",end:"\\*/",patterns:[{include:"#comments-block"}]}]},annotations:{patterns:[{name:"storage.type.annotation.dart",match:"@[a-zA-Z]+"}]},"constants-and-special-vars":{patterns:[{name:"constant.language.dart",match:"(?<!\\$)\\b(true|false|null)\\b(?!\\$)"},{name:"variable.language.dart",match:"(?<!\\$)\\b(this|super)\\b(?!\\$)"},{name:"constant.numeric.dart",match:"(?<!\\$)\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b(?!\\$)"},{include:"#class-identifier"},{include:"#function-identifier"}]},"class-identifier":{patterns:[{match:"(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?|bool\\b|num\\b|int\\b|double\\b|dynamic\\b|(void)\\b)",captures:{"1":{name:"support.class.dart"},"2":{patterns:[{include:"#type-args"}]},"3":{name:"storage.type.primitive.dart"}}}]},"function-identifier":{patterns:[{match:"([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?(\\(|\\s+=>)",captures:{"1":{name:"entity.name.function.dart"},"2":{patterns:[{include:"#type-args"}]}}}]},"type-args":{begin:"(<)",end:"(>)",beginCaptures:{"1":{name:"other.source.dart"}},endCaptures:{"1":{name:"other.source.dart"}},patterns:[{include:"#class-identifier"},{match:"[\\s,]+"},{name:"keyword.declaration.dart",match:"extends"}]},keywords:{patterns:[{name:"keyword.cast.dart",match:"(?<!\\$)\\bas\\b(?!\\$)"},{name:"keyword.control.catch-exception.dart",match:"(?<!\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\$)"},{name:"keyword.control.dart",match:"(?<!\\$)\\b(break|case|continue|default|do|else|for|if|in|return|switch|while)\\b(?!\\$)"},{name:"keyword.control.dart",match:"(?<!\\$)\\b(sync(\\*)?|async(\\*)?|await|yield(\\*)?)\\b(?!\\$)"},{name:"keyword.control.dart",match:"(?<!\\$)\\bassert\\b(?!\\$)"},{name:"keyword.control.new.dart",match:"(?<!\\$)\\b(new)\\b(?!\\$)"},{name:"keyword.declaration.dart",match:"(?<!\\$)\\b(abstract|class|enum|extends|extension|external|factory|implements|get|mixin|native|operator|set|typedef|with|covariant)\\b(?!\\$)"},{name:"keyword.operator.dart",match:"(?<!\\$)\\b(is\\!?)\\b(?!\\$)"},{name:"keyword.operator.ternary.dart",match:"\\?|:"},{name:"keyword.operator.bitwise.dart",match:"(<<|>>>?|~|\\^|\\||&)"},{name:"keyword.operator.assignment.bitwise.dart",match:"((&|\\^|\\||<<|>>>?)=)"},{name:"keyword.operator.closure.dart",match:"(=>)"},{name:"keyword.operator.comparison.dart",match:"(==|!=|<=?|>=?)"},{name:"keyword.operator.assignment.arithmetic.dart",match:"(([+*/%-]|\\~)=)"},{name:"keyword.operator.assignment.dart",match:"(=)"},{name:"keyword.operator.increment-decrement.dart",match:"(\\-\\-|\\+\\+)"},{name:"keyword.operator.arithmetic.dart",match:"(\\-|\\+|\\*|\\/|\\~\\/|%)"},{name:"keyword.operator.logical.dart",match:"(!|&&|\\|\\|)"},{name:"storage.modifier.dart",match:"(?<!\\$)\\b(static|final|const|required|late)\\b(?!\\$)"},{name:"storage.type.primitive.dart",match:"(?<!\\$)\\b(?:void|var)\\b(?!\\$)"}]},"string-interp":{patterns:[{match:"\\$([a-zA-Z0-9_]+)",captures:{"1":{name:"variable.parameter.dart"}}},{name:"string.interpolated.expression.dart",begin:"\\$\\{",end:"\\}",patterns:[{include:"#constants-and-special-vars",name:"variable.parameter.dart"},{include:"#strings"},{name:"variable.parameter.dart",match:"[a-zA-Z0-9_]+"}]},{name:"constant.character.escape.dart",match:"\\\\."}]},strings:{patterns:[{name:"string.interpolated.triple.double.dart",begin:"(?<!r)\"\"\"",end:"\"\"\"(?!\")",patterns:[{include:"#string-interp"}]},{name:"string.interpolated.triple.single.dart",begin:"(?<!r)'''",end:"'''(?!')",patterns:[{include:"#string-interp"}]},{name:"string.quoted.triple.double.dart",begin:"r\"\"\"",end:"\"\"\"(?!\")"},{name:"string.quoted.triple.single.dart",begin:"r'''",end:"'''(?!')"},{name:"string.interpolated.double.dart",begin:"(?<!\\|r)\"",end:"\"",patterns:[{name:"invalid.string.newline",match:"\\n"},{include:"#string-interp"}]},{name:"string.quoted.double.dart",begin:"r\"",end:"\"",patterns:[{name:"invalid.string.newline",match:"\\n"}]},{name:"string.interpolated.single.dart",begin:"(?<!\\|r)'",end:"'",patterns:[{name:"invalid.string.newline",match:"\\n"},{include:"#string-interp"}]},{name:"string.quoted.single.dart",begin:"r'",end:"'",patterns:[{name:"invalid.string.newline",match:"\\n"}]}]},punctuation:{patterns:[{name:"punctuation.comma.dart",match:","},{name:"punctuation.terminator.dart",match:";"},{name:"punctuation.dot.dart",match:"\\."}]}};var dart_tmLanguage = {information_for_contributors:information_for_contributors,version:version,name:name,scopeName:scopeName,patterns:patterns,repository:repository};
|
|
6
6
|
|
|
7
|
-
exports
|
|
7
|
+
exports.default = dart_tmLanguage;
|
|
8
8
|
exports.information_for_contributors = information_for_contributors;
|
|
9
9
|
exports.name = name;
|
|
10
10
|
exports.patterns = patterns;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const information_for_contributors=["This file has been converted from https://github.com/ionide/ionide-fsgrammar/blob/master/grammars/fsharp.json","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."];const version="https://github.com/ionide/ionide-fsgrammar/commit/e177bd7f9d3402f70d2f1fb42c74057ed1ccf6fa";const name="fsharp";const scopeName="source.fsharp";const patterns=[{include:"#compiler_directives"},{include:"#comments"},{include:"#constants"},{include:"#strings"},{include:"#chars"},{include:"#double_tick"},{include:"#definition"},{include:"#abstract_definition"},{include:"#attributes"},{include:"#modules"},{include:"#anonymous_functions"},{include:"#du_declaration"},{include:"#record_declaration"},{include:"#records"},{include:"#strp_inlined"},{include:"#keywords"},{include:"#cexprs"},{include:"#text"}];const repository={strp_inlined_body:{patterns:[{include:"#comments"},{include:"#anonymous_functions"},{match:"(\\^[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{name:"keyword.fsharp",match:"\\b(and|when|or)\\b"},{begin:"(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#strp_inlined_body"}]},{match:"(static member|member)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)",captures:{"1":{name:"keyword.fsharp"},"2":{name:"variable.fsharp"},"3":{name:"keyword.symbol.fsharp"}}},{include:"#compiler_directives"},{include:"#constants"},{include:"#strings"},{include:"#chars"},{include:"#double_tick"},{include:"#keywords"},{include:"#text"},{include:"#definition"},{include:"#attributes"},{include:"#keywords"},{include:"#cexprs"},{include:"#text"}]},strp_inlined:{patterns:[{begin:"(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#strp_inlined_body"}]}]},generic_declaration:{patterns:[{comments:"SRTP syntax support",begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"},"3":{name:"keyword.fsharp"}},end:"(\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{begin:"(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{match:"(('|\\^)[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#variables"},{include:"#keywords"}]},{name:"keyword.fsharp",match:"\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"},{name:"keyword.fsharp",match:":"},{include:"#constants"},{match:"(('|\\^)[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{begin:"(<)",end:"(>)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"(('|\\^)[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#tuple_signature"},{include:"#generic_declaration"}]},{begin:"(\\()",end:"(\\))",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"(([?[:alpha:]0-9'`^._ ]+))+",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#tuple_signature"}]},{match:"(?!when|and|or\\b)\\b([\\w0-9'`^._]+)",comments:"Here we need the \\w modifier in order to check that the words isn't blacklisted",captures:{"1":{name:"entity.name.type.fsharp"}}},{match:"(\\|)",comments:"Prevent captures of `|>` as a keyword when defining custom operator like `<|>`",captures:{"1":{name:"keyword.symbol.fsharp"}}},{include:"#keywords"}]},anonymous_record_declaration:{begin:"(\\{\\|)",end:"(\\|\\})",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"[[:alpha:]0-9'`^_ ]+(:)",captures:{"1":{name:"keyword.symbol.fsharp"}}},{match:"([[:alpha:]0-9'`^_ ]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#anonymous_record_declaration"},{include:"#keywords"}]},record_signature:{patterns:[{match:"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"}}},{begin:"({)",end:"(})",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"}}},{include:"#record_signature"}]},{include:"#keywords"}]},tuple_signature:{patterns:[{match:"(([?[:alpha:]0-9'`^._ ]+))+",captures:{"1":{name:"entity.name.type.fsharp"}}},{begin:"(\\()",end:"(\\))",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"(([?[:alpha:]0-9'`^._ ]+))+",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#tuple_signature"}]},{include:"#keywords"}]},anonymous_functions:{patterns:[{name:"function.anonymous",begin:"\\b(fun)\\b",end:"(->)",beginCaptures:{"1":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.arrow.fsharp"}},patterns:[{include:"#comments"},{begin:"(\\()",end:"\\s*(?=(->))",beginCaptures:{"1":{name:"keyword.symbol.arrow.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.arrow.fsharp"}},patterns:[{include:"#member_declaration"}]},{include:"#variables"}]}]},attributes:{patterns:[{name:"support.function.attribute.fsharp",begin:"\\[\\<",end:"\\>\\]|\\]",patterns:[{include:"$self"}]}]},comments:{patterns:[{name:"comment.literate.command.fsharp",match:"(\\(\\*{3}.*\\*{3}\\))",beginCaptures:{"1":{name:"comment.block.fsharp"}}},{name:"comment.block.markdown.fsharp",begin:"^\\s*(\\(\\*\\*(?!\\)))((?!\\*\\)).)*$","while":"^(?!\\s*(\\*)+\\)\\s*$)",beginCaptures:{"1":{name:"comment.block.fsharp"}},endCaptures:{"1":{name:"comment.block.fsharp"}},patterns:[{include:"text.html.markdown"}]},{name:"comment.block.fsharp",begin:"(\\(\\*(?!\\)))",end:"(\\*+\\))",beginCaptures:{"1":{name:"comment.block.fsharp"}},endCaptures:{"1":{name:"comment.block.fsharp"}},patterns:[{comments:"Capture // when inside of (* *) like that the rule which capture comments starting by // is not trigger. See https://github.com/ionide/ionide-fsgrammar/issues/155",name:"fast-capture.comment.line.double-slash.fsharp",match:"//"},{include:"#comments"}]},{name:"comment.block.markdown.fsharp.end",match:"((?<!\\()(\\*)+\\))",captures:{"1":{name:"comment.block.fsharp"}}},{name:"comment.line.markdown.fsharp",begin:"///","while":"///",patterns:[{include:"text.html.markdown"}]},{name:"comment.line.double-slash.fsharp",match:"//.*$"}]},constants:{patterns:[{name:"constant.language.unit.fsharp",match:"\\(\\)"},{name:"constant.numeric.float.fsharp",match:"\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"},{name:"constant.numeric.integer.nativeint.fsharp",match:"\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))"},{name:"constant.language.boolean.fsharp",match:"\\b(true|false)\\b"},{name:"constant.other.fsharp",match:"\\b(null|unit|void)\\b"}]},abstract_definition:{name:"abstract.definition.fsharp",begin:"\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(:)",end:"\\s*(with)\\b|=|$",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"keyword.fsharp"},"3":{name:"support.function.attribute.fsharp"},"5":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{include:"#comments"},{include:"#common_declaration"},{match:"(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)((?!with\\b)\\b([\\w0-9'`^._ ]+)){0,1}",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"},"3":{name:"keyword.symbol.fsharp"},"4":{name:"entity.name.type.fsharp"}}},{match:"(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",comments:"Here we need the \\w modifier in order to check that the words isn't blacklisted",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]},common_binding_definition:{patterns:[{include:"#comments"},{include:"#attributes"},{comments:"SRTP syntax support",begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"},"3":{name:"keyword.fsharp"}},end:"(\\))\\s*((?=,)|(?=\\=))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"(\\^[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#variables"},{include:"#keywords"}]},{begin:"(:)\\s*(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"}},end:"(\\)\\s*(([?[:alpha:]0-9'`^._ ]*)))",endCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(:)\\s*(\\^[[:alpha:]0-9'._]+)\\s*(when)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"},"3":{name:"keyword.fsharp"}},end:"(?=:)",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{name:"keyword.fsharp",match:"\\b(and|when|or)\\b"},{comment:"Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition",match:"([[:alpha:]0-9'^._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{name:"keyword.symbol.fsharp",match:"(\\(|\\))"}]},{match:"(:)\\s*([?[:alpha:]0-9'`^._ ]+)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"}}},{match:"(->)\\s*(\\()?\\s*([?[:alpha:]0-9'`^._ ]+)*",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"},"3":{name:"entity.name.type.fsharp"}}},{begin:"(\\*)\\s*(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"}},end:"(\\)\\s*(([?[:alpha:]0-9'`^._ ]+))+)",endCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(\\*)(\\s*([?[:alpha:]0-9'`^._ ]+))*",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"}},end:"(?==)|(?=\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#tuple_signature"}]},{begin:"(<+(?![[:space:]]*\\)))",beginComment:"The group (?![[:space:]]*\\) is for protection against overload operator. static member (<)",end:"((?<!:)>|\\))",endComment:"The group (?<!:) prevent us from stopping on :> when using SRTP synthax",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#generic_declaration"}]},{include:"#anonymous_record_declaration"},{begin:"({)",end:"(})",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#record_signature"}]},{include:"#definition"},{include:"#variables"},{include:"#keywords"}]},definition:{patterns:[{name:"binding.fsharp",begin:"\\b(let mutable|static let mutable|static let|let inline|let|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",end:"\\s*(with\\b|=|\\n+=|(?<=\\=))",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"keyword.fsharp"},"3":{name:"support.function.attribute.fsharp"},"4":{name:"storage.modifier.fsharp"},"5":{name:"variable.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{include:"#common_binding_definition"}]},{name:"binding.fsharp",begin:"\\b(use|use\\!|and|and!)\\s*(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",end:"\\s*(=)",beginCaptures:{"1":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{include:"#common_binding_definition"}]},{name:"binding.fsharp",begin:"(?<=with|and)\\s*\\b((get|set)\\s*(?=\\())(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",end:"\\s*(=|\\n+=|(?<=\\=))",beginCaptures:{"4":{name:"variable.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{include:"#common_binding_definition"}]},{name:"binding.fsharp",begin:"\\b(static val mutable|val mutable|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",end:"\\n$",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"keyword.fsharp"},"3":{name:"support.function.attribute.fsharp"},"4":{name:"storage.modifier.fsharp"},"5":{name:"variable.fsharp"}},patterns:[{include:"#common_binding_definition"}]},{name:"binding.fsharp",begin:"\\b(new)\\b\\s+(\\()",end:"(\\))",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{include:"#common_binding_definition"}]}]},du_declaration:{patterns:[{name:"du_declaration.fsharp",begin:"\\b(of)\\b",end:"$|(\\|)",beginCaptures:{"1":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#comments"},{match:"([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)",captures:{"1":{name:"variable.parameter.fsharp"},"2":{name:"keyword.symbol.fsharp"},"3":{name:"entity.name.type.fsharp"}}},{match:"(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#anonymous_record_declaration"},{include:"#keywords"}]}]},keywords:{patterns:[{name:"storage.modifier",match:"\\b(private|public|internal)\\b"},{name:"keyword.fsharp",match:"\\b(private|to|public|internal|function|class|exception|delegate|of|as|begin|end|inherit|let!|interface|abstract|enum|member|and|when|or|use|use\\!|struct|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"},{name:"keyword.control",match:"\\b(match|yield|yield!|with|if|then|else|elif|for|in|return!|return|try|finally|while|do)(?!')\\b"},{name:"keyword.symbol.new",match:"\\b(new)\\b"},{name:"keyword.symbol.fsharp",match:"(&&&|\\|\\|\\||\\^\\^\\^|~~~|<<<|>>>|\\|>|\\->|\\<\\-|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|{|}|\\||_|\\.\\.|\\,|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\(|\\)|\\<\\<)"}]},modules:{patterns:[{name:"entity.name.section.fsharp",begin:"\\b(namespace global)|\\b(namespace|module)\\s*(public|internal|private|rec)?\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)",end:"(\\s?=|\\s|$)",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"keyword.fsharp"},"3":{name:"storage.modifier.fsharp"},"4":{name:"entity.name.section.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{name:"entity.name.section.fsharp",match:"(\\.)([A-Z][[:alpha:]0-9'_]*)",captures:{"1":{name:"punctuation.separator.namespace-reference.fsharp"},"2":{name:"entity.name.section.fsharp"}}}]},{name:"namespace.open.fsharp",begin:"\\b(open type|open)\\s+([[:alpha:]][[:alpha:]0-9'_]*)(?=(\\.[A-Z][[:alpha:]0-9_]*)*)",end:"(\\s|$)",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"entity.name.section.fsharp"}},patterns:[{name:"entity.name.section.fsharp",match:"(\\.)([[:alpha:]][[:alpha:]0-9'_]*)",captures:{"1":{name:"punctuation.separator.namespace-reference.fsharp"},"2":{name:"entity.name.section.fsharp"}}},{include:"#comments"}]},{name:"namespace.alias.fsharp",begin:"^\\s*(module)\\s+([A-Z][[:alpha:]0-9'_]*)\\s*(=)\\s*([A-Z][[:alpha:]0-9'_]*)",end:"(\\s|$)",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"entity.name.type.namespace.fsharp"},"3":{name:"punctuation.separator.namespace-definition.fsharp"},"4":{name:"entity.name.section.fsharp"}},patterns:[{name:"entity.name.section.fsharp",match:"(\\.)([A-Z][[:alpha:]0-9'_]*)",captures:{"1":{name:"punctuation.separator.namespace-reference.fsharp"},"2":{name:"entity.name.section.fsharp"}}}]}]},strings:{patterns:[{name:"string.quoted.literal.fsharp",begin:"(?=[^\\\\])(@\")",end:"(\")(?!\")",beginCaptures:{"1":{name:"punctuation.definition.string.begin.fsharp"}},endCaptures:{"1":{name:"punctuation.definition.string.end.fsharp"}},patterns:[{name:"constant.character.string.escape.fsharp",match:"\"(\")"}]},{name:"string.quoted.triple.fsharp",begin:"(?=[^\\\\])(\"\"\")",end:"(\"\"\")",beginCaptures:{"1":{name:"punctuation.definition.string.begin.fsharp"}},endCaptures:{"1":{name:"punctuation.definition.string.end.fsharp"}},patterns:[{include:"#string_formatter"}]},{name:"string.quoted.double.fsharp",begin:"(?=[^\\\\])(\")",end:"(\")",beginCaptures:{"1":{name:"punctuation.definition.string.begin.fsharp"}},endCaptures:{"1":{name:"punctuation.definition.string.end.fsharp"}},patterns:[{name:"punctuation.separator.string.ignore-eol.fsharp",match:"\\\\$[ \\t]*"},{name:"constant.character.string.escape.fsharp",match:"\\\\(['\"\\\\abfnrtv]|([01][0-9][0-9]|2[0-4][0-9]|25[0-5])|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U00(0[0-9a-fA-F]|10)[0-9a-fA-F]{4}))"},{name:"invalid.illegal.character.string.fsharp",match:"\\\\(([0-9]{1,3})|(x[^\\s]{0,2})|(u[^\\s]{0,4})|(U[^\\s]{0,8})|[^\\s])"},{include:"#string_formatter"}]}]},string_formatter:{patterns:[{name:"entity.name.type.format.specifier.fsharp",match:"(%0?-?(\\d+)?((a|t)|(\\.\\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\\+?A)))",captures:{"1":{name:"keyword.format.specifier.fsharp"}}}]},variables:{patterns:[{name:"constant.language.unit.fsharp",match:"\\(\\)"},{match:"(\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private\\b)\\b[\\w[:alpha:]0-9'`<>^._ ]+)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"}}}]},common_declaration:{patterns:[{begin:"\\s*(->)\\s*([[:alpha:]0-9'`^._ ]+)(<)",end:"(>)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"},"3":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"([[:alpha:]0-9'`^._ ]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]},{match:"\\s*(->)\\s*(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"entity.name.type.fsharp"}}},{include:"#anonymous_record_declaration"},{begin:"(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([?[:alpha:]0-9'`^._ ]+)(<))",end:"(>)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"},"3":{name:"keyword.symbol.fsharp"},"4":{name:"keyword.symbol.fsharp"},"5":{name:"entity.name.type.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"([[:alpha:]0-9'`^._ ]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]}]},member_declaration:{patterns:[{include:"#comments"},{include:"#common_declaration"},{comments:"SRTP syntax support",begin:"(:)\\s*(\\()\\s*(static member|member)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"keyword.symbol.fsharp"},"3":{name:"keyword.fsharp"}},end:"(\\))\\s*((?=,)|(?=\\=))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{begin:"(\\()",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},end:"(\\))",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{match:"(\\^[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#variables"},{include:"#keywords"}]},{match:"(\\^[[:alpha:]0-9'._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{name:"keyword.fsharp",match:"\\b(and|when|or)\\b"},{name:"keyword.symbol.fsharp",match:"(\\(|\\))"},{match:"(\\?{0,1})([[:alpha:]0-9'`^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\\s*(:{0,1})(\\s*([?[:alpha:]0-9'`<>._ ]+)){0,1}",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"variable.parameter.fsharp"},"3":{name:"keyword.symbol.fsharp"},"4":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]},double_tick:{patterns:[{name:"variable.other.binding.fsharp",match:"(``)([^`]*)(``)",captures:{"1":{name:"string.quoted.single.fsharp"},"2":{name:"variable.other.binding.fsharp"},"3":{name:"string.quoted.single.fsharp"}}}]},records:{patterns:[{name:"record.fsharp",begin:"\\b(type)[\\s]+(private|internal|public)?\\s*",end:"\\s*((with)|((as)\\s+([[:alpha:]0-9']+))|(=)|[\\n=]|(\\(\\)))",beginCaptures:{"1":{name:"keyword.fsharp"},"2":{name:"storage.modifier.fsharp"}},endCaptures:{"2":{name:"keyword.fsharp"},"3":{name:"keyword.fsharp"},"4":{name:"keyword.fsharp"},"5":{name:"variable.parameter.fsharp"},"6":{name:"keyword.symbol.fsharp"},"7":{name:"constant.language.unit.fsharp"}},patterns:[{include:"#comments"},{include:"#attributes"},{match:"([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)",captures:{"1":{name:"entity.name.type.fsharp"}}},{begin:"(<)",end:"((?<!:)>)",beginCaptures:{"1":{name:"keyword.fsharp"}},endCaptures:{"1":{name:"keyword.fsharp"}},patterns:[{match:"(('|\\^)``[[:alpha:]0-9`^:,._ ]+``|('|\\^)[[:alpha:]0-9`^:._]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{name:"keyword.fsharp",match:"\\b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\\b"},{begin:"(\\()",end:"(\\))",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{match:"(static member|member|new)",captures:{"1":{name:"keyword.fsharp"}}},{include:"#common_binding_definition"}]},{match:"([\\w0-9'`^._]+)",comments:"Here we need the \\w modifier in order to check that the words isn't blacklisted",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]},{match:"\\s*(private|internal|public)",captures:{"1":{name:"keyword.symbol.fsharp"},"2":{name:"storage.modifier.fsharp"}}},{begin:"(\\()",end:"\\s*(?=(=)|[\\n=]|(\\(\\))|(as))",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#member_declaration"}]},{include:"#keywords"}]}]},record_declaration:{patterns:[{begin:"(\\{)",beginCaptures:{"1":{name:"keyword.symbol.fsharp"}},end:"(?<=\\})",patterns:[{include:"#comments"},{begin:"(((mutable)\\s[[:alpha:]]+)|[[:alpha:]0-9'`<>^._]*)\\s*((?<!:):(?!:))\\s*",beginCaptures:{"3":{name:"keyword.fsharp"},"4":{name:"keyword.symbol.fsharp"}},end:"$|(;|\\})",endCaptures:{"1":{name:"keyword.symbol.fsharp"}},patterns:[{include:"#comments"},{match:"([[:alpha:]0-9'`^_ ]+)",captures:{"1":{name:"entity.name.type.fsharp"}}},{include:"#keywords"}]},{include:"#compiler_directives"},{include:"#constants"},{include:"#strings"},{include:"#chars"},{include:"#double_tick"},{include:"#definition"},{include:"#attributes"},{include:"#anonymous_functions"},{include:"#keywords"},{include:"#cexprs"},{include:"#text"}]}]},cexprs:{patterns:[{name:"cexpr.fsharp",match:"\\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)\\s*\\{",captures:{"0":{name:"keyword.fsharp"}}}]},chars:{patterns:[{name:"char.fsharp",match:"('\\\\?.')",captures:{"1":{name:"string.quoted.single.fsharp"}}}]},text:{patterns:[{name:"text.fsharp",match:"\\\\"}]},compiler_directives:{patterns:[{name:"keyword.control.directive.fsharp",match:"\\s?(#if|#elif|#elseif|#else|#endif|#light|#nowarn)",captures:{}}]}};var fsharp_tmLanguage = {information_for_contributors:information_for_contributors,version:version,name:name,scopeName:scopeName,patterns:patterns,repository:repository};
|
|
6
6
|
|
|
7
|
-
exports
|
|
7
|
+
exports.default = fsharp_tmLanguage;
|
|
8
8
|
exports.information_for_contributors = information_for_contributors;
|
|
9
9
|
exports.name = name;
|
|
10
10
|
exports.patterns = patterns;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
const information_for_contributors=["This file has been converted from https://github.com/jeff-hykin/better-go-syntax/blob/master/export/generated.tmLanguage.json","If you want to provide a fix or improvement, please create a pull request against the original repository.","Once accepted there, we are happy to receive an update request."];const version="https://github.com/jeff-hykin/better-go-syntax/commit/6175663a7a0e23d58ccf9aab95054cb6e5c92aff";const name="Go";const scopeName="source.go";const patterns=[{include:"#comments"},{include:"#comments"},{comment:"Interpreted string literals",begin:"\"",beginCaptures:{"0":{name:"punctuation.definition.string.begin.go"}},end:"\"",endCaptures:{"0":{name:"punctuation.definition.string.end.go"}},name:"string.quoted.double.go",patterns:[{include:"#string_escaped_char"},{include:"#string_placeholder"}]},{comment:"Raw string literals",begin:"`",beginCaptures:{"0":{name:"punctuation.definition.string.begin.go"}},end:"`",endCaptures:{"0":{name:"punctuation.definition.string.end.go"}},name:"string.quoted.raw.go",patterns:[{include:"#string_placeholder"}]},{comment:"Syntax error receiving channels",match:"<\\-([\\t ]+)chan\\b",captures:{"1":{name:"invalid.illegal.receive-channel.go"}}},{comment:"Syntax error sending channels",match:"\\bchan([\\t ]+)<-",captures:{"1":{name:"invalid.illegal.send-channel.go"}}},{comment:"Syntax error using slices",match:"\\[\\](\\s+)",captures:{"1":{name:"invalid.illegal.slice.go"}}},{comment:"Syntax error numeric literals",match:"\\b0[0-7]*[89]\\d*\\b",name:"invalid.illegal.numeric.go"},{comment:"Built-in functions",match:"\\b(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)\\b(?=\\()",name:"support.function.builtin.go"},{comment:"Function declarations",match:"^(\\bfunc\\b)(?:\\s+(\\([^\\)]+\\)\\s+)?(\\w+)(?=\\())?",captures:{"1":{name:"keyword.function.go"},"2":{patterns:[{include:"#brackets"},{include:"#operators"}]},"3":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"entity.name.function.go"}]}}},{comment:"Functions",match:"(\\bfunc\\b)|(\\w+)(?=\\()",captures:{"1":{name:"keyword.function.go"},"2":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"support.function.go"}]}}},{include:"#numeric_literals"},{comment:"Language constants",match:"\\b(true|false|nil|iota)\\b",name:"constant.language.go"},{begin:"\\b(package)\\s+",beginCaptures:{"1":{name:"keyword.package.go"}},end:"(?!\\G)",patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"entity.name.package.go"}]},{begin:"\\b(type)\\s+",beginCaptures:{"1":{name:"keyword.type.go"}},end:"(?!\\G)",patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"entity.name.type.go"}]},{begin:"\\b(import)\\s+",beginCaptures:{"1":{name:"keyword.import.go"}},end:"(?!\\G)",patterns:[{include:"#imports"}]},{begin:"\\b(var)\\s+",beginCaptures:{"1":{name:"keyword.var.go"}},end:"(?!\\G)",patterns:[{include:"#variables"}]},{match:"(?<!var)\\s*(\\w+(?:\\.\\w+)*(?>,\\s*\\w+(?:\\.\\w+)*)*)(?=\\s*=(?!=))",captures:{"1":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+(?:\\.\\w+)*",name:"variable.other.assignment.go",captures:{"0":{patterns:[{include:"#delimiters"}]}}},{include:"#delimiters"}]}}},{match:"\\b\\w+(?:,\\s*\\w+)*(?=\\s*:=)",captures:{"0":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"variable.other.assignment.go"},{include:"#delimiters"}]}}},{comment:"Terminators",match:";",name:"punctuation.terminator.go"},{include:"#brackets"},{include:"#delimiters"},{include:"#keywords"},{include:"#operators"},{include:"#runes"},{include:"#storage_types"}];const repository={brackets:{patterns:[{begin:"{",beginCaptures:{"0":{name:"punctuation.definition.begin.bracket.curly.go"}},end:"}",endCaptures:{"0":{name:"punctuation.definition.end.bracket.curly.go"}},patterns:[{include:"$self"}]},{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.begin.bracket.round.go"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.end.bracket.round.go"}},patterns:[{include:"$self"}]},{match:"\\[|\\]",name:"punctuation.definition.bracket.square.go"}]},comments:{patterns:[{name:"comment.block.go",begin:"(\\/\\*)",beginCaptures:{"1":{name:"punctuation.definition.comment.go"}},end:"(\\*\\/)",endCaptures:{"1":{name:"punctuation.definition.comment.go"}}},{name:"comment.line.double-slash.go",begin:"(\\/\\/)",beginCaptures:{"1":{name:"punctuation.definition.comment.go"}},end:"(?:\\n|$)"}]},delimiters:{patterns:[{match:",",name:"punctuation.other.comma.go"},{match:"\\.(?!\\.\\.)",name:"punctuation.other.period.go"},{match:":(?!=)",name:"punctuation.other.colon.go"}]},imports:{patterns:[{match:"((?!\\s+\")[^\\s]*)?\\s*((\")([^\"]*)(\"))",captures:{"1":{name:"entity.alias.import.go"},"2":{name:"string.quoted.double.go"},"3":{name:"punctuation.definition.string.begin.go"},"4":{name:"entity.name.import.go"},"5":{name:"punctuation.definition.string.end.go"}}},{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.imports.begin.bracket.round.go"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.imports.end.bracket.round.go"}},patterns:[{include:"#comments"},{include:"#imports"}]}]},keywords:{patterns:[{comment:"Flow control keywords",match:"\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\b",name:"keyword.control.go"},{match:"\\bchan\\b",name:"keyword.channel.go"},{match:"\\bconst\\b",name:"keyword.const.go"},{match:"\\bfunc\\b",name:"keyword.function.go"},{match:"\\binterface\\b",name:"keyword.interface.go"},{match:"\\bmap\\b",name:"keyword.map.go"},{match:"\\bstruct\\b",name:"keyword.struct.go"}]},operators:{comment:"Note that the order here is very important!",patterns:[{match:"(\\*|&)(?=\\w)",name:"keyword.operator.address.go"},{match:"<\\-",name:"keyword.operator.channel.go"},{match:"\\-\\-",name:"keyword.operator.decrement.go"},{match:"\\+\\+",name:"keyword.operator.increment.go"},{match:"(==|!=|<=|>=|<(?!<)|>(?!>))",name:"keyword.operator.comparison.go"},{match:"(&&|\\|\\||!)",name:"keyword.operator.logical.go"},{match:"(=|\\+=|\\-=|\\|=|\\^=|\\*=|/=|:=|%=|<<=|>>=|&\\^=|&=)",name:"keyword.operator.assignment.go"},{match:"(\\+|\\-|\\*|/|%)",name:"keyword.operator.arithmetic.go"},{match:"(&(?!\\^)|\\||\\^|&\\^|<<|>>)",name:"keyword.operator.arithmetic.bitwise.go"},{match:"\\.\\.\\.",name:"keyword.operator.ellipsis.go"}]},runes:{patterns:[{begin:"'",beginCaptures:{"0":{name:"punctuation.definition.string.begin.go"}},end:"'",endCaptures:{"0":{name:"punctuation.definition.string.end.go"}},name:"string.quoted.rune.go",patterns:[{match:"\\G(\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})|.)(?=')",name:"constant.other.rune.go"},{match:"[^']+",name:"invalid.illegal.unknown-rune.go"}]}]},storage_types:{patterns:[{match:"\\bbool\\b",name:"storage.type.boolean.go"},{match:"\\bbyte\\b",name:"storage.type.byte.go"},{match:"\\berror\\b",name:"storage.type.error.go"},{match:"\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\b",name:"storage.type.numeric.go"},{match:"\\brune\\b",name:"storage.type.rune.go"},{match:"\\bstring\\b",name:"storage.type.string.go"},{match:"\\buintptr\\b",name:"storage.type.uintptr.go"}]},string_escaped_char:{patterns:[{match:"\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",name:"constant.character.escape.go"},{match:"\\\\[^0-7xuUabfnrtv\\'\"]",name:"invalid.illegal.unknown-escape.go"}]},string_placeholder:{patterns:[{match:"%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGspw]",name:"constant.other.placeholder.go"}]},variables:{patterns:[{match:"(\\w+(?:,\\s*\\w+)*)(\\s+\\*?\\w+(?:\\.\\w+)?\\s*)?(?=\\s*=)",captures:{"1":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"variable.other.assignment.go"},{include:"#delimiters"}]},"2":{patterns:[{include:"$self"}]}}},{match:"(\\w+(?:,\\s*\\w+)*)(\\s+(\\[(\\d*|\\.\\.\\.)\\])*\\*?(<-)?\\w+(?:\\.\\w+)?\\s*[^=].*)",captures:{"1":{patterns:[{match:"\\d\\w*",name:"invalid.illegal.identifier.go"},{match:"\\w+",name:"variable.other.declaration.go"},{include:"#delimiters"}]},"2":{patterns:[{include:"$self"}]}}},{begin:"\\(",beginCaptures:{"0":{name:"punctuation.definition.variables.begin.bracket.round.go"}},end:"\\)",endCaptures:{"0":{name:"punctuation.definition.variables.end.bracket.round.go"}},patterns:[{include:"$self"},{include:"#variables"}]}]},numeric_literals:{match:"(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.])|(?<=[eEpP])[+-])*",captures:{"0":{patterns:[{begin:"(?=.)",end:"(?:\\n|$)",patterns:[{match:"(?:(?:(?:(?:(?:\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?:(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\w))?(?:\\n|$)|\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|\\G((?:(?<=[0-9])\\.|\\.(?=[0-9])))([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?:(?<!_)([eE])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)))?(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)?(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))|(\\G0[xX])((?:(?<=[0-9a-fA-F])\\.|\\.(?=[0-9a-fA-F])))([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))",captures:{"1":{name:"constant.numeric.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"2":{name:"punctuation.separator.constant.numeric.go"},"3":{name:"constant.numeric.decimal.point.go"},"4":{name:"constant.numeric.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"5":{name:"punctuation.separator.constant.numeric.go"},"6":{name:"keyword.other.unit.exponent.decimal.go"},"7":{name:"keyword.operator.plus.exponent.decimal.go"},"8":{name:"keyword.operator.minus.exponent.decimal.go"},"9":{name:"constant.numeric.exponent.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"10":{name:"keyword.other.unit.imaginary.go"},"11":{name:"constant.numeric.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"12":{name:"punctuation.separator.constant.numeric.go"},"13":{name:"keyword.other.unit.exponent.decimal.go"},"14":{name:"keyword.operator.plus.exponent.decimal.go"},"15":{name:"keyword.operator.minus.exponent.decimal.go"},"16":{name:"constant.numeric.exponent.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"17":{name:"keyword.other.unit.imaginary.go"},"18":{name:"constant.numeric.decimal.point.go"},"19":{name:"constant.numeric.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"20":{name:"punctuation.separator.constant.numeric.go"},"21":{name:"keyword.other.unit.exponent.decimal.go"},"22":{name:"keyword.operator.plus.exponent.decimal.go"},"23":{name:"keyword.operator.minus.exponent.decimal.go"},"24":{name:"constant.numeric.exponent.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"25":{name:"keyword.other.unit.imaginary.go"},"26":{name:"keyword.other.unit.hexadecimal.go"},"27":{name:"constant.numeric.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"28":{name:"punctuation.separator.constant.numeric.go"},"29":{name:"constant.numeric.hexadecimal.go"},"30":{name:"constant.numeric.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"31":{name:"punctuation.separator.constant.numeric.go"},"32":{name:"keyword.other.unit.exponent.hexadecimal.go"},"33":{name:"keyword.operator.plus.exponent.hexadecimal.go"},"34":{name:"keyword.operator.minus.exponent.hexadecimal.go"},"35":{name:"constant.numeric.exponent.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"36":{name:"keyword.other.unit.imaginary.go"},"37":{name:"keyword.other.unit.hexadecimal.go"},"38":{name:"constant.numeric.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"39":{name:"punctuation.separator.constant.numeric.go"},"40":{name:"keyword.other.unit.exponent.hexadecimal.go"},"41":{name:"keyword.operator.plus.exponent.hexadecimal.go"},"42":{name:"keyword.operator.minus.exponent.hexadecimal.go"},"43":{name:"constant.numeric.exponent.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"44":{name:"keyword.other.unit.imaginary.go"},"45":{name:"keyword.other.unit.hexadecimal.go"},"46":{name:"constant.numeric.hexadecimal.go"},"47":{name:"constant.numeric.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"48":{name:"punctuation.separator.constant.numeric.go"},"49":{name:"keyword.other.unit.exponent.hexadecimal.go"},"50":{name:"keyword.operator.plus.exponent.hexadecimal.go"},"51":{name:"keyword.operator.minus.exponent.hexadecimal.go"},"52":{name:"constant.numeric.exponent.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"53":{name:"keyword.other.unit.imaginary.go"}}},{match:"(?:(?:(?:\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$)|(\\G0[bB])_?([01](?:[01]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$))|(\\G0[oO]?)_?((?:[0-7]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))+)(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$))",captures:{"1":{name:"constant.numeric.decimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"2":{name:"punctuation.separator.constant.numeric.go"},"3":{name:"keyword.other.unit.imaginary.go"},"4":{name:"keyword.other.unit.binary.go"},"5":{name:"constant.numeric.binary.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"6":{name:"punctuation.separator.constant.numeric.go"},"7":{name:"keyword.other.unit.imaginary.go"},"8":{name:"keyword.other.unit.octal.go"},"9":{name:"constant.numeric.octal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"10":{name:"punctuation.separator.constant.numeric.go"},"11":{name:"keyword.other.unit.imaginary.go"},"12":{name:"keyword.other.unit.hexadecimal.go"},"13":{name:"constant.numeric.hexadecimal.go",patterns:[{match:"(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",name:"punctuation.separator.constant.numeric.go"}]},"14":{name:"punctuation.separator.constant.numeric.go"},"15":{name:"keyword.other.unit.imaginary.go"}}},{match:"(?:(?:[0-9a-zA-Z_\\.])|(?<=[eEpP])[+-])+",name:"invalid.illegal.constant.numeric.go"}]}]}}}};var go_tmLanguage = {information_for_contributors:information_for_contributors,version:version,name:name,scopeName:scopeName,patterns:patterns,repository:repository};
|
|
6
6
|
|
|
7
|
-
exports
|
|
7
|
+
exports.default = go_tmLanguage;
|
|
8
8
|
exports.information_for_contributors = information_for_contributors;
|
|
9
9
|
exports.name = name;
|
|
10
10
|
exports.patterns = patterns;
|