import '../../editor/browser/coreCommands.js'; import '../../editor/browser/widget/codeEditor/codeEditorWidget.js'; import '../../editor/browser/widget/diffEditor/diffEditor.contribution.js'; import '../../editor/contrib/anchorSelect/browser/anchorSelect.js'; import '../../editor/contrib/bracketMatching/browser/bracketMatching.js'; import '../../editor/contrib/caretOperations/browser/caretOperations.js'; import '../../editor/contrib/caretOperations/browser/transpose.js'; import '../../editor/contrib/clipboard/browser/clipboard.js'; import '../../editor/contrib/codeAction/browser/codeActionContributions.js'; import '../../editor/contrib/codelens/browser/codelensController.js'; import '../../editor/contrib/colorPicker/browser/colorPickerContribution.js'; import '../../editor/contrib/comment/browser/comment.js'; import '../../editor/contrib/contextmenu/browser/contextmenu.js'; import '../../editor/contrib/cursorUndo/browser/cursorUndo.js'; import '../../editor/contrib/dnd/browser/dnd.js'; import '../../editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js'; import '../../editor/contrib/dropOrPasteInto/browser/dropIntoEditorContribution.js'; import '../../editor/contrib/find/browser/findController.js'; import '../../editor/contrib/folding/browser/folding.js'; import '../../editor/contrib/fontZoom/browser/fontZoom.js'; import '../../editor/contrib/format/browser/formatActions.js'; import '../../editor/contrib/documentSymbols/browser/documentSymbols.js'; import '../../editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js'; import '../../editor/contrib/inlineProgress/browser/inlineProgress.js'; import '../../editor/contrib/gotoSymbol/browser/goToCommands.js'; import '../../editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js'; import '../../editor/contrib/gotoError/browser/gotoError.js'; import '../../editor/contrib/gpu/browser/gpuActions.js'; import '../../editor/contrib/hover/browser/hoverContribution.js'; import '../../editor/contrib/indentation/browser/indentation.js'; import '../../editor/contrib/inlayHints/browser/inlayHintsContribution.js'; import '../../editor/contrib/inPlaceReplace/browser/inPlaceReplace.js'; import '../../editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js'; import '../../editor/contrib/lineSelection/browser/lineSelection.js'; import '../../editor/contrib/linesOperations/browser/linesOperations.js'; import '../../editor/contrib/linkedEditing/browser/linkedEditing.js'; import '../../editor/contrib/links/browser/links.js'; import '../../editor/contrib/longLinesHelper/browser/longLinesHelper.js'; import '../../editor/contrib/middleScroll/browser/middleScroll.contribution.js'; import '../../editor/contrib/multicursor/browser/multicursor.js'; import '../../editor/contrib/parameterHints/browser/parameterHints.js'; import '../../editor/contrib/placeholderText/browser/placeholderText.contribution.js'; import '../../editor/contrib/rename/browser/rename.js'; import '../../editor/contrib/sectionHeaders/browser/sectionHeaders.js'; import '../../editor/contrib/semanticTokens/browser/documentSemanticTokens.js'; import '../../editor/contrib/semanticTokens/browser/viewportSemanticTokens.js'; import '../../editor/contrib/smartSelect/browser/smartSelect.js'; import '../../editor/contrib/snippet/browser/snippetController2.js'; import '../../editor/contrib/stickyScroll/browser/stickyScrollContribution.js'; import '../../editor/contrib/suggest/browser/suggestController.js'; import '../../editor/contrib/suggest/browser/suggestInlineCompletions.js'; import '../../editor/contrib/tokenization/browser/tokenization.js'; import '../../editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js'; import '../../editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js'; import '../../editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js'; import '../../editor/contrib/wordHighlighter/browser/wordHighlighter.js'; import '../../editor/contrib/wordOperations/browser/wordOperations.js'; import '../../editor/contrib/wordPartOperations/browser/wordPartOperations.js'; import '../../editor/contrib/readOnlyMessage/browser/contribution.js'; import '../../editor/contrib/diffEditorBreadcrumbs/browser/contribution.js'; import '../../editor/contrib/floatingMenu/browser/floatingMenu.contribution.js'; import '../../editor/common/standaloneStrings.js'; import '../../base/browser/ui/codicons/codicon/codicon.css'; import '../../base/browser/ui/codicons/codicon/codicon-modifiers.css'; import '../../editor/standalone/browser/iPadShowKeyboard/iPadShowKeyboard.js'; import '../../editor/standalone/browser/inspectTokens/inspectTokens.js'; import '../../editor/standalone/browser/quickAccess/standaloneHelpQuickAccess.js'; import '../../editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js'; import '../../editor/standalone/browser/quickAccess/standaloneGotoSymbolQuickAccess.js'; import '../../editor/standalone/browser/quickAccess/standaloneCommandsQuickAccess.js'; import '../../editor/standalone/browser/referenceSearch/standaloneReferenceSearch.js'; import '../../editor/standalone/browser/toggleHighContrast/toggleHighContrast.js'; import { languages } from '../../editor/editor.api2.js'; const conf = { comments: { lineComment: "#", blockComment: ["'''", "'''"] }, brackets: [ ["{", "}"], ["[", "]"], ["(", ")"] ], autoClosingPairs: [ { open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: '"', close: '"', notIn: ["string"] }, { open: "'", close: "'", notIn: ["string", "comment"] } ], surroundingPairs: [ { open: "{", close: "}" }, { open: "[", close: "]" }, { open: "(", close: ")" }, { open: '"', close: '"' }, { open: "'", close: "'" } ], onEnterRules: [ { beforeText: new RegExp( "^\\s*(?:def|class|for|if|elif|else|while|try|with|finally|except|async|match|case).*?:\\s*$" ), action: { indentAction: languages.IndentAction.Indent } } ], folding: { offSide: true, markers: { start: new RegExp("^\\s*#region\\b"), end: new RegExp("^\\s*#endregion\\b") } } }; const language = { defaultToken: "", tokenPostfix: ".python", keywords: [ // This section is the result of running // `import keyword; for k in sorted(keyword.kwlist + keyword.softkwlist): print(" '" + k + "',")` // in a Python REPL, // though note that the output from Python 3 is not a strict superset of the // output from Python 2. "False", // promoted to keyword.kwlist in Python 3 "None", // promoted to keyword.kwlist in Python 3 "True", // promoted to keyword.kwlist in Python 3 "_", // new in Python 3.10 "and", "as", "assert", "async", // new in Python 3 "await", // new in Python 3 "break", "case", // new in Python 3.10 "class", "continue", "def", "del", "elif", "else", "except", "exec", // Python 2, but not 3. "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "match", // new in Python 3.10 "nonlocal", // new in Python 3 "not", "or", "pass", "print", // Python 2, but not 3. "raise", "return", "try", "type", // new in Python 3.12 "while", "with", "yield", "int", "float", "long", "complex", "hex", "abs", "all", "any", "apply", "basestring", "bin", "bool", "buffer", "bytearray", "callable", "chr", "classmethod", "cmp", "coerce", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "execfile", "file", "filter", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "id", "input", "intern", "isinstance", "issubclass", "iter", "len", "locals", "list", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "reversed", "range", "raw_input", "reduce", "reload", "repr", "reversed", "round", "self", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "unichr", "unicode", "vars", "xrange", "zip", "__dict__", "__methods__", "__members__", "__class__", "__bases__", "__name__", "__mro__", "__subclasses__", "__init__", "__import__" ], brackets: [ { open: "{", close: "}", token: "delimiter.curly" }, { open: "[", close: "]", token: "delimiter.bracket" }, { open: "(", close: ")", token: "delimiter.parenthesis" } ], tokenizer: { root: [ { include: "@whitespace" }, { include: "@numbers" }, { include: "@strings" }, [/[,:;]/, "delimiter"], [/[{}\[\]()]/, "@brackets"], [/@[a-zA-Z_]\w*/, "tag"], [ /[a-zA-Z_]\w*/, { cases: { "@keywords": "keyword", "@default": "identifier" } } ] ], // Deal with white space, including single and multi-line comments whitespace: [ [/\s+/, "white"], [/(^#.*$)/, "comment"], [/'''/, "string", "@endDocString"], [/"""/, "string", "@endDblDocString"] ], endDocString: [ [/[^']+/, "string"], [/\\'/, "string"], [/'''/, "string", "@popall"], [/'/, "string"] ], endDblDocString: [ [/[^"]+/, "string"], [/\\"/, "string"], [/"""/, "string", "@popall"], [/"/, "string"] ], // Recognize hex, negatives, decimals, imaginaries, longs, and scientific notation numbers: [ [/-?0x([abcdef]|[ABCDEF]|\d)+[lL]?/, "number.hex"], [/-?(\d*\.)?\d+([eE][+\-]?\d+)?[jJ]?[lL]?/, "number"] ], // Recognize strings, including those broken across lines with \ (but not without) strings: [ [/'$/, "string.escape", "@popall"], [/f'{1,3}/, "string.escape", "@fStringBody"], [/'/, "string.escape", "@stringBody"], [/"$/, "string.escape", "@popall"], [/f"{1,3}/, "string.escape", "@fDblStringBody"], [/"/, "string.escape", "@dblStringBody"] ], fStringBody: [ [/[^\\'\{\}]+$/, "string", "@popall"], [/[^\\'\{\}]+/, "string"], [/\{[^\}':!=]+/, "identifier", "@fStringDetail"], [/\\./, "string"], [/'/, "string.escape", "@popall"], [/\\$/, "string"] ], stringBody: [ [/[^\\']+$/, "string", "@popall"], [/[^\\']+/, "string"], [/\\./, "string"], [/'/, "string.escape", "@popall"], [/\\$/, "string"] ], fDblStringBody: [ [/[^\\"\{\}]+$/, "string", "@popall"], [/[^\\"\{\}]+/, "string"], [/\{[^\}':!=]+/, "identifier", "@fStringDetail"], [/\\./, "string"], [/"/, "string.escape", "@popall"], [/\\$/, "string"] ], dblStringBody: [ [/[^\\"]+$/, "string", "@popall"], [/[^\\"]+/, "string"], [/\\./, "string"], [/"/, "string.escape", "@popall"], [/\\$/, "string"] ], fStringDetail: [ [/[:][^}]+/, "string"], [/[!][ars]/, "string"], // only !a, !r, !s are supported by f-strings: https://docs.python.org/3/tutorial/inputoutput.html#formatted-string-literals [/=/, "string"], [/\}/, "identifier", "@pop"] ] } }; export { conf, language };