import { StreamLanguage } from "@codemirror/language";
import { simpleMode } from "@codemirror/legacy-modes/mode/simple-mode";

// Auto-generated for Macaulay2-1.26.05. Do not modify this file manually.

const Macaulay2Mode = simpleMode({
  start: [
    { regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: "string" },
    {
      regex:
        /(A1BrouwerDegrees|AbstractSimplicialComplexes|AbstractToricVarieties|Acknowledgement|AdditionalPaths|AdjointIdeal|AdjunctionForSurfaces|AfterEval|AfterNoPrint|AfterPrint|AInfinity|AlgebraicSplines|Algorithm|Alignment|AllCodimensions|AllMarkovBases|allowableThreads|AnalyzeSheafOnP1|applicationDirectorySuffix|argument|Ascending|AssociativeAlgebras|Authors|AuxiliaryFiles|backtrace|Bareiss|Base|BaseFunction|baseRings|BaseRow|BasisElementLimit|Bayer|BeforePrint|BeginningMacaulay2|Benchmark|BernsteinSato|Bertini|BettiCharacters|BGG|BIBasis|Binary|Binomial|BinomialEdgeIdeals|Binomials|BKZ|blockMatrixForm|Body|BoijSoederberg|Book3264Examples|BooleanGB|Boundary|Boxes|Brackets|Browse|Bruns|cache|CacheExampleOutput|CallLimit|CannedExample|CatalanConstant|Caveat|CellularResolutions|Center|Certification|ChainComplexExtras|ChainComplexOperations|ChangeMatrix|CharacteristicClasses|CheckDocumentation|Chordal|Citation|cite|Classic|clearAll|clearOutput|close|closeIn|closeOut|ClosestFit|Code|CodimensionLimit|CodingTheory|CoefficientRing|Cofactor|CohenEngine|CohenTopLevel|CohomCalg|CoincidentRootLoci|commandLine|compactMatrixForm|Complement|CompleteIntersection|CompleteIntersectionResolutions|Complexes|Concentration|ConductorElement|Configuration|ConformalBlocks|ConnectionMatrices|Consequences|Constants|Contributors|ConvexInterface|ConwayPolynomials|copyright|Core|CorrespondenceScrolls|CotangentSchubert|coverageSummary|CpMackeyFunctors|Cremona|currentFileDirectory|currentFileName|currentLayout|currentPackage|Cycle|Cyclotomic|Date|dd|DebuggingMode|debuggingMode|debugLevel|DecomposableSparseSystems|Decompose|Default|defaultPrecision|Degree|DegreeGroup|DegreeLift|DegreeLimit|DegreeMap|DegreeOrder|DegreeRank|Degrees|Dense|Density|Depth|Descending|Description|DeterminantalRepresentations|DGAlgebras|dictionaryPath|DiffAlg|Direction|Dispatch|DivideConquer|DividedPowers|Dmodules|docExample|docTemplate|Down|Dynamic|EagonResolution|EdgeIdeals|edit|EigenSolver|EisenbudHunekeVasconcelos|Elimination|EliminationMatrices|EliminationTemplates|EllipticCurves|EllipticIntegrals|Email|end|endl|Engine|engineDebugLevel|EngineTests|EnumerationCurves|environment|EquivariantGB|errorDepth|EulerConstant|Example|ExampleFiles|ExampleSystems|Exclude|exit|Ext|ExteriorExtensions|ExteriorIdeals|ExteriorModules|false|FastMinors|FastNonminimal|FGLM|fileDictionaries|fileExitHooks|FileName|FindOne|FiniteFittingIdeals|First|FirstPackage|FlatMonoid|Flexible|flush|FollowLinks|ForeignFunctions|FormalGroupLaws|Format|FourierMotzkin|FourTiTwo|fpLLL|FreeToExact|FrobeniusThresholds|FunctionFieldDesingularization|GameTheory|GBDegrees|gbTrace|GenerateAssertions|Generic|GenericInitialIdeal|GeometricDecomposability|gfanInterface|Givens|GKMVarieties|GLex|Global|GlobalAssignHook|globalAssignmentHooks|GlobalHookStore|GlobalReleaseHook|GlobalSectionLimit|Gorenstein|GradedLieAlgebras|GraphicalModels|GraphicalModelsMLE|Graphics|Graphs|GRevLex|GroebnerStrata|GroebnerWalk|GroupLex|GroupRevLex|GTZ|Hadamard|handleInterrupts|HardDegreeLimit|Heading|Headline|Heft|Height|help|Hermite|Hermitian|HH|hh|HigherCIOperators|HighestWeights|Hilbert|HodgeIntegrals|HolonomicSystems|homeDirectory|HomePage|Homogeneous|Homogeneous2|Homogenization|HomologicalAlgebraPackage|HomotopyLieAlgebra|HorizontalSpace|HyperplaneArrangements|id|IgnoreExampleErrors|ii|IncidenceCorrespondenceCohomology|incomparable|Increment|indeterminate|Index|indexComponents|infinity|InfoDirSection|infoHelp|Inhomogeneous|Inputs|InstallPrefix|IntegerProgramming|IntegralClosure|InternalDegree|interpreterDepth|Intersection|InvariantRing|InverseMethod|Inverses|InverseSystems|Invertible|InvolutiveBases|Isomorphism|Item|Iterate|Jacobian|Jets|Join|JSON|JSONRPC|K3Carpets|K3Surfaces|Keep|KeepFiles|KeepZeroes|Key|Keywords|Kronecker|KustinMiller|lastMatch|LatticePolytopes|Layout|Left|LengthLimit|Lex|LexIdeals|LieAlgebraRepresentations|Limit|Linear|LinearAlgebra|LinearTruncations|lineNumber|listLocalSymbols|listUserSymbols|LLLBases|loadDepth|LoadDocumentation|loadedFiles|loadedPackages|Local|LocalRings|LongPolynomial|M0nbar|Macaulay2Doc|MacaulayPosets|Maintainer|MakeDocumentation|MakeHTML|MakeInfo|MakePDF|MapleInterface|Markov|MatchingFields|MatrixFactorizations|MatrixSchubert|Matroids|maxAllowableThreads|maxExponent|MaximalRank|MaxReductionCount|MCMApproximations|MergeTeX|minExponent|MinimalGenerators|MinimalMatrix|minimalPresentationMap|minimalPresentationMapInv|MinimalPrimes|Minimize|minimizingMap|MinimumVersion|Miura|MixedMultiplicity|ModuleDeformations|MonodromySolver|Monomial|MonomialAlgebras|MonomialIntegerPrograms|MonomialOrbits|MonomialOrder|Monomials|MonomialSize|MRDI|Msolve|MultigradedBGG|MultigradedImplicitization|MultiGradedRationalMap|MultiplicitySequence|MultiplierIdeals|MultiplierIdealsDim2|MultiprojectiveVarieties|NAGtypes|Name|Nauty|NautyGraphs|NCAlgebra|NCLex|NewFromMethod|newline|NewMethod|NewOfFromMethod|NewOfMethod|nil|Node|NoetherianOperators|NoetherNormalization|Nonminimal|NonminimalWithGB|NonPrincipalTestIdeals|NoPrint|Normaliz|NormalToricVarieties|NotANumber|notify|NTL|null|nullaryMethods|NumericalAlgebraicGeometry|NumericalCertification|NumericalImplicitization|NumericalLinearAlgebra|NumericalSchubertCalculus|NumericalSemigroups|NumericSolutions|numTBBThreads|OIGroebnerBases|OldChainComplexes|OnlineLookup|OO|oo|ooo|oooo|OpenMath|operatorAttributes|OptionalComponentsPresent|Options|Order|order|Oscillators|OutputDictionary|Outputs|OverField|OverZZ|PackageCitations|PackageDictionary|PackageExports|PackageImports|PackageTemplate|Padic|PairLimit|PairsRemaining|ParallelF4|ParallelizeByDegree|Parametrization|Parsing|path|PathSignatures|PencilsOfQuadrics|Permanents|Permutations|PHCpack|PhylogeneticTrees|pi|PieriMaps|PlaneCurveLinearSeries|PlaneCurveSingularities|Points|Polyhedra|Polymake|PolyominoIdeals|Posets|Position|PositivityToricBundles|POSIX|Postfix|Pre|Precision|Prefix|prefixDirectory|prefixPath|PrimaryDecomposition|PrimaryTag|PrimitiveElement|Print|printingAccuracy|printingLeadLimit|printingPrecision|printingSeparator|printingTimeLimit|printingTrailLimit|printWidth|Probability|profileSummary|programPaths|Projective|Prune|PruningMap|pruningMap|PseudomonomialPrimaryDecomposition|Pullback|pullbackMaps|PushForward|pushoutMaps|Python|QthPower|QuadraticIdealExamplesByRoos|Quasidegrees|QuaternaryQuartics|QuillenSuslin|quit|Quotient|Radical|RadicalCodim1|RaiseError|RandomCanonicalCurves|RandomComplexes|RandomCurves|RandomCurvesOverVerySmallFiniteFields|RandomGenus14Curves|RandomIdeals|RandomMonomialIdeals|RandomObjects|RandomPlaneCurves|RandomPoints|RandomSpaceCurves|Range|RationalMaps|RationalPoints|RationalPoints2|ReactionNetworks|RealFP|RealQP|RealQP1|RealRoots|RealRR|RealXD|recursionLimit|Reduce|ReesAlgebra|References|ReflexivePolytopesDB|Regularity|RelativeCanonicalResolution|Reload|RemakeAllDocumentation|RerunExamples|ResidualIntersections|ResLengthThree|ResolutionsOfStanleyReisnerRings|restart|Result|Resultants|returnCode|Reverse|RevLex|Right|RInterface|rootPath|rootURI|RunDirectory|RunExamples|RunExternalM2|SagbiGbDetection|Saturation|SaturationMap|Schubert2|SchurComplexes|SchurFunctors|SchurRings|SchurVeronese|SCMAlgebras|scriptCommandLine|SCSCP|SectionRing|SeeAlso|SegreClasses|SemidefiniteProgramming|Seminormalization|SeparateExec|Serialization|sheafExt|ShimoyamaYokoyama|showClassStructure|showStructure|showUserStructure|SimpleDoc|SimplicialComplexes|SimplicialDecomposability|SimplicialModules|SimplicialPosets|SimplifyFractions|SizeLimit|SkewCommutative|SlackIdeals|SLnEquivariantMatrices|SLPexpressions|Sort|SortStrategy|SourceCode|SourceRing|SpaceCurves|SparseResultants|SpechtModule|SpecialFanoFourfolds|SpectralSequences|SRdeformations|Standard|StartWithOneMinor|StatePolytope|StatGraphs|stderr|stdio|StopBeforeComputation|stopIfError|StopIteration|StopWithMinimalGenerators|Strategy|Strict|StronglyStableIdeals|Style|SubalgebraBases|Subnodes|SubringLimit|subscript|Sugarless|SumsOfSquares|SuperLinearAlgebra|superscript|SVDComplexes|SwitchingFields|SymbolicPowers|SymmetricPolynomials|Synopsis|Syzygies|SyzygyLimit|SyzygyMatrix|SyzygyRows|Tableaux|TangentCone|TateOnProducts|TensorComplexes|TerraciniLoci|Test|testExample|TestIdeals|TeXmacs|Text|ThinSincereQuivers|ThreadedGB|Threads|Threshold|Topcom|topLevelMode|Tor|TorAlgebra|Toric|ToricHigherDirectImages|ToricInvariants|ToricTopology|ToricVectorBundles|Torsion|TorsionFree|TotalPairs|Tree|TriangularSets|Triangulations|Tries|Trim|Triplets|Tropical|TropicalToric|true|Truncate|Truncations|TSpreadIdeals|TypicalValue|typicalValues|Undo|Unique|Units|UnitTest|Unmixed|Up|UpdateOnly|UpperTriangular|Usage|UseCachedExampleOutput|UseHilbertFunction|UserMode|UseSyzygies|UseTarget|Valuations|Variable|VariableBaseName|Variables|Varieties|Vasconcelos|VectorFields|VectorGraphics|Verbose|Verbosity|Verify|VersalDeformations|Version|version|VerticalSpace|viewHelp|VirtualResolutions|Visualize|VNumber|WebApp|Weights|WeilDivisors|WeylAlgebra|WeylAlgebras|WeylGroups|WhitneyStratifications|WittVectors|Wrap|XML)\b/,
      token: "atom",
    },
    {
      regex:
        /(SPACE|TEST|and|break|breakpoint|catch|continue|do|elapsedTime|elapsedTiming|else|except|for|from|global|if|in|list|local|new|not|of|or|profile|return|shield|step|symbol|then|threadLocal|threadVariable|throw|time|timing|to|trap|try|when|while|xor)\b/,
      token: "keyword",
    },
    {
      regex:
        /(ANCHOR|Adjacent|AffineVariety|Analyzer|AngleBarList|Array|AssociativeExpression|AtomicInt|BLOCKQUOTE|BODY|BOLD|BR|BUTTON|Bag|BasicList|BettiTally|BinaryOperation|Boolean|CC|CCi|CDATA|CODE|COMMENT|CacheTable|CoherentSheaf|Command|CompiledFunction|CompiledFunctionBody|CompiledFunctionClosure|Complex|ComplexField|ComplexMap|Constant|DD|DIV|DL|DT|Database|Descent|Describe|Dictionary|DirectSum|Divide|DocumentTag|EM|Eliminate|EngineRing|Equation|Error|ExampleItem|Expression|File|FilePosition|FractionField|Function|FunctionApplication|FunctionBody|FunctionClosure|GaloisField|GeneralOrderedMonoid|GlobalDictionary|GradedModule|GradedModuleMap|GroebnerBasis|GroebnerBasisOptions|HEAD|HEADER1|HEADER2|HEADER3|HEADER4|HEADER5|HEADER6|HR|HREF|HTML|HashTable|HeaderType|Holder|Hybrid|Hypertext|HypertextContainer|HypertextParagraph|HypertextVoid|IFRAME|IMG|INDENT|INPUT|ITALIC|Ideal|ImmutableType|IndeterminateNumber|IndexedVariable|IndexedVariableTable|InexactField|InexactFieldFamily|InexactNumber|InfiniteNumber|IntermediateMarkUpType|Iterator|KBD|Keyword|LABEL|LATER|LI|LINK|LITERAL|List|LocalDictionary|LowerBound|MENU|META|Manipulator|MapExpression|MarkUpType|Matrix|MatrixExpression|MethodFunction|MethodFunctionBinary|MethodFunctionSingle|MethodFunctionWithOptions|Minus|Module|Monoid|MonoidElement|MonomialIdeal|MultigradedBettiTally|MutableHashTable|MutableList|MutableMatrix|Mutex|Net|NetFile|Nothing|Number|NumberedVerticalList|OL|OneExpression|Option|OptionTable|OrderedMonoid|PARA|PRE|Package|Parenthesize|Parser|Partition|PolynomialRing|Power|Product|ProductOrder|Program|ProgramRun|ProjectiveHilbertPolynomial|ProjectiveVariety|Pseudocode|PseudocodeClosure|QQ|QuotientRing|RR|RRi|RealField|Resolution|Ring|RingElement|RingFamily|RingMap|RowExpression|SAMP|SCRIPT|SMALL|SPAN|STRONG|STYLE|SUB|SUBSECTION|SUP|ScriptedFunctor|SelfInitializingType|Sequence|Set|SheafExpression|SheafMap|SheafOfRings|SparseMonomialVectorExpression|SparseVectorExpression|String|Subscript|Sum|SumOfTwists|Superscript|Symbol|SymbolBody|TABLE|TD|TEX|TH|TITLE|TO|TO2|TOH|TR|TT|Table|Tally|Task|TensorProduct|TestInput|Thing|Time|Type|UL|URL|VAR|Variety|Vector|VectorExpression|VerticalList|VirtualTally|VisibleList|WrapperType|ZZ|ZeroExpression)\b/,
      token: "tag",
    },
    {
      regex:
        /(BesselJ|BesselY|Beta|Digamma|EXAMPLE|End|Fano|GCstats|GF|Gamma|Grassmannian|Hom|LLL|LUdecomposition|M2CODE|NNParser|Proj|QQParser|QRDecomposition|SVD|SYNOPSIS|Schubert|Spec|ZZParser|about|abs|accumulate|acos|acosh|acot|acoth|addCancelTask|addDependencyTask|addEndFunction|addHook|addStartTask|adjoint|agm|alarm|all|ambient|analyticSpread|ancestor|ancestors|andP|ann|annihilator|antipode|any|append|applicationDirectory|apply|applyKeys|applyPairs|applyTable|applyValues|apropos|arXiv|ascii|asin|asinh|ass|assert|associatedGradedRing|associatedPrimes|atEndOfFile|atan|atan2|atanh|augmentationMap|autoload|baseFilename|baseName|baseRing|basis|beginDocumentation|benchmark|betti|between|binomial|borel|cacheValue|cancelTask|canonicalBundle|canonicalMap|canonicalTruncation|capture|ceiling|centerString|changeBase|changeDirectory|char|charAnalyzer|characters|check|checkDegrees|chi|class|clean|clearEcho|code|codim|coefficient|coefficientRing|coefficients|cohomology|coimage|coker|cokernel|collectGarbage|columnAdd|columnMult|columnPermute|columnRankProfile|columnSwap|columnate|combine|commandInterpreter|commonRing|commonest|comodule|compareExchange|complement|complete|complex|component|components|compose|compositions|compress|concatenate|concentration|conductor|cone|conjugate|connectingExtMap|connectingMap|connectingTorMap|connectionCount|constParser|constantStrand|content|contract|conwayPolynomial|copy|copyDirectory|copyFile|cos|cosh|cot|cotangentSheaf|coth|cover|coverMap|cpuTime|createTask|csc|csch|currentColumnNumber|currentDirectory|currentPosition|currentRowNumber|currentTime|cylinder|deadParser|debug|debugError|decompose|deepSplice|default|degree|degreeGroup|degreeLength|degrees|degreesMonoid|degreesRing|delete|demark|denominator|depth|describe|det|determinant|diagonalMatrix|diameter|dictionary|diff|difference|dim|directProduct|directSum|disassemble|discriminant|dismiss|distinguished|divideByVariable|doc|document|drop|dual|eagonNorthcott|eagonNorthcottComplex|echoOff|echoOn|eigenvalues|eigenvectors|eint|elements|eliminate|endPackage|entries|epicResolutionMap|erase|erf|erfc|error|euler|eulers|even|examples|exchange|exec|exp|expectedReesIdeal|expm1|exponents|export|exportFrom|exportMutable|expression|extend|exteriorPower|factor|fileExecutable|fileExists|fileLength|fileMode|fileReadable|fileTime|fileWritable|fillMatrix|findFiles|findHeft|findProgram|findSynonyms|first|firstkey|fittingIdeal|flagLookup|flatten|flattenRing|flip|floor|fold|forceGB|fork|format|formation|frac|fraction|frames|freeResolution|fromDividedPowers|fromDual|functionBody|futureParser|gb|gbRemove|gbSnapshot|gcd|gcdCoefficients|gcdLLL|genera|generateAssertions|generator|generators|genericMatrix|genericSkewMatrix|genericSymmetricMatrix|gens|genus|get|getChangeMatrix|getGlobalSymbol|getIOThreadMode|getNetFile|getNonUnit|getPrimeWithRootOfUnity|getSymbol|getWWW|getc|getenv|globalAssign|globalAssignFunction|globalAssignment|globalReleaseFunction|gradedModule|gramm|graphIdeal|graphRing|groebnerBasis|groupID|hash|hashTable|headlines|heft|height|hermite|hilbertFunction|hilbertPolynomial|hilbertSeries|hold|homogenize|homology|homomorphism|homotopyMap|hooks|horizontalJoin|horseshoeResolution|html|httpHeaders|hypertext|icFracP|icFractions|icMap|icPIdeal|ideal|idealSheaf|idealizer|identity|image|imaginaryPart|importFrom|independentSets|index|indices|inducedMap|inducesWellDefinedMap|info|input|insert|installAssignmentMethod|installHilbertFunction|installMethod|installMinprimes|installPackage|installedPackages|instance|instances|integralClosure|integrate|intersect|intersectInP|intersection|interval|inverse|inverseErf|inversePermutation|inverseRegularizedBeta|inverseRegularizedGamma|inverseSystem|irreducibleCharacteristicSeries|irreducibleDecomposition|isANumber|isAffineRing|isBorel|isCanceled|isCommutative|isComplexMorphism|isConstant|isDirectSum|isDirectory|isEmpty|isExact|isField|isFinite|isFinitePrimeField|isFree|isFreeModule|isGlobalSymbol|isHomogeneous|isIdeal|isInfinite|isInjective|isInputFile|isIsomorphic|isIsomorphism|isLLL|isLinearType|isListener|isLocallyFree|isMember|isModule|isMonomialIdeal|isMutable|isNormal|isNullHomotopic|isNullHomotopyOf|isOpen|isOutputFile|isPolynomialRing|isPrimary|isPrime|isPrimitive|isProjective|isPseudoprime|isQuasiIsomorphism|isQuotientModule|isQuotientOf|isQuotientRing|isReady|isReal|isReduction|isRegularFile|isRing|isScalar|isShortExactSequence|isSkewCommutative|isSmooth|isSorted|isSquareFree|isStandardGradedPolynomialRing|isSubmodule|isSubquotient|isSubset|isSupportedInZeroLocus|isSurjective|isTable|isUnit|isVeryAmple|isWellDefined|isWeylAlgebra|isc|isomorphism|iterator|jacobian|jacobianDual|join|ker|kernel|kernelLLL|kernelOfLocalization|keys|kill|koszul|koszulComplex|last|lcm|leadCoefficient|leadComponent|leadMonomial|leadTerm|left|length|letterParser|lift|liftMapAlongQuasiIsomorphism|liftable|limitFiles|limitProcesses|lines|linkFile|listForm|listSymbols|lngamma|load|loadPackage|localDictionaries|localize|locate|lock|log|log1p|longExactSequence|lookup|lookupCount|lowerLeft|lowerRight|makeDirectory|makeDocumentTag|makePackageIndex|makeS2|map|markedGB|match|mathML|matrix|max|maxPosition|member|memoize|memoizeClear|memoizeValues|merge|mergePairs|method|methodOptions|methods|midpoint|min|minPosition|minPres|mingens|mingle|minimalBetti|minimalPresentation|minimalPrimes|minimalReduction|minimize|minimizeFilename|minors|minprimes|minus|mkdir|mod|module|modulo|monoid|monomialCurveIdeal|monomialIdeal|monomialSubideal|monomials|moveFile|multidegree|multidoc|multigraded|multiplicity|mutable|mutableIdentity|mutableMatrix|naiveTruncation|nanosleep|needs|needsPackage|net|netList|newClass|newCoordinateSystem|newNetFile|newPackage|newRing|next|nextPrime|nextkey|nonspaceAnalyzer|norm|normalCone|notImplemented|nullHomotopy|nullParser|nullSpace|nullhomotopy|numColumns|numRows|number|numcols|numerator|numeric|numericInterval|numgens|numrows|odd|oeis|ofClass|on|openDatabase|openDatabaseOut|openFiles|openIn|openInOut|openListener|openOut|openOutAppend|optP|optionalSignParser|options|orP|override|pack|package|packageTemplate|pad|pager|pairs|parallelApply|parent|parse|part|partition|partitions|parts|pdim|peek|permanents|permutations|pfaffian|pfaffians|pivots|plus|poincare|poincareN|polarize|poly|polylog|position|positions|power|powermod|precision|preimage|prepend|presentation|pretty|primaryComponent|primaryDecomposition|print|printString|printerr|processID|product|projectiveHilbertPolynomial|promote|protect|prune|pruneComplex|pruneDiff|pruneUnit|pseudoRemainder|pseudocode|pullback|pushForward|pushout|quotient|quotientRemainder|radical|radicalContainment|random|randomComplexMap|randomElement|randomKRationalPoint|randomMutableMatrix|randomSubset|rank|rays|read|readDirectory|readPackage|readlink|realPart|realpath|recursionDepth|reduceHilbert|reducedRowEchelonForm|reductionNumber|reesAlgebra|reesAlgebraIdeal|reesIdeal|regSeqInIdeal|regex|regexQuote|registerFinalizer|regularity|regularizedBeta|regularizedGamma|relations|relativizeFilename|remainder|remove|removeDirectory|removeFile|removeLowestDimension|reorganize|replace|res|reshape|resolution|resolutionMap|resultant|reverse|right|ring|ringFromFractions|roots|rotate|round|rowAdd|rowMult|rowPermute|rowRankProfile|rowSwap|rsort|run|runHooks|runLengthEncode|runProgram|same|saturate|scan|scanKeys|scanLines|scanPairs|scanValues|schedule|schreyerOrder|searchPath|sec|sech|seeParsing|select|selectInSubring|selectKeys|selectPairs|selectValues|selectVariables|separate|separateRegexp|sequence|serialNumber|set|setEcho|setGroupID|setIOExclusive|setIOSynchronized|setIOUnSynchronized|setRandomSeed|setup|setupEmacs|setupLift|setupPromote|sheaf|sheafHom|show|showHtml|showTex|shuffle|sign|simpleDocFrob|sin|singularLocus|sinh|size|size2|sleep|smithNormalForm|solve|someTerms|sort|sortColumns|source|span|specialFiber|specialFiberIdeal|splice|splitWWW|sqrt|stack|stacksProject|stacktrace|standardForm|standardPairs|stashValue|status|store|style|sub|sublists|submatrix|submatrixByDegrees|subquotient|subsets|substitute|substring|subtable|sum|super|support|switch|sylvesterMatrix|symbolBody|symlinkDirectory|symlinkFile|symmetricAlgebra|symmetricAlgebraIdeal|symmetricKernel|symmetricPower|synonym|syz|table|take|tally|tan|tangentCone|tangentSheaf|tanh|target|taskResult|temporaryFileName|tensor|tensorAssociativity|tensorCommutativity|terminalParser|terms|testHunekeQuestion|tests|tex|texMath|times|toAbsolutePath|toCC|toCCi|toChainComplex|toDividedPowers|toDual|toExternalString|toField|toList|toLower|toMutableComplex|toRR|toRRi|toSequence|toString|toUpper|top|topCoefficients|topComponents|torSymmetry|trace|transpose|trim|truncate|truncateOutput|tryLock|tutorial|ultimate|unbag|uncurry|undocumented|uniform|uninstallAllPackages|uninstallPackage|union|unique|uniquePermutations|unlock|unsequence|unstack|upperLeft|upperRight|urlEncode|use|userSymbols|utf8|utf8check|utf8substring|validate|value|values|variety|vars|vector|versalEmbedding|wait|wedgeProduct|weightRange|whichGm|width|wikipedia|wrap|yonedaExtension|yonedaMap|yonedaProduct|youngest|zero|zeta)\b/,
      token: "def",
    },

    {
      regex: /0x[a-f\d]+|[-+]?(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i,
      token: "number",
    },
    { regex: /[{[(]/, indent: true },
    { regex: /[}\]);]/, dedent: true },
    { regex: /[a-z$][\w$]*/, token: "variable" },
    { regex: /^\s*--%.*/, token: "comment meta" },
    { regex: /--.*/, token: "comment" },
  ],
});

export const macaulay2 = () => StreamLanguage.define(Macaulay2Mode);
