367 lines
11 KiB
JavaScript
367 lines
11 KiB
JavaScript
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 };
|