123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- declare let MonacoEnvironment: monaco.Environment | undefined;
- interface Window {
- MonacoEnvironment?: monaco.Environment | undefined;
- }
- declare namespace monaco {
- export type Thenable<T> = PromiseLike<T>;
- export interface Environment {
- /**
- * Define a global `monaco` symbol.
- * This is true by default in AMD and false by default in ESM.
- */
- globalAPI?: boolean;
- /**
- * The base url where the editor sources are found (which contains the vs folder)
- */
- baseUrl?: string;
- /**
- * A web worker factory.
- * NOTE: If `getWorker` is defined, `getWorkerUrl` is not invoked.
- */
- getWorker?(workerId: string, label: string): Promise<Worker> | Worker;
- /**
- * Return the location for web worker scripts.
- * NOTE: If `getWorker` is defined, `getWorkerUrl` is not invoked.
- */
- getWorkerUrl?(workerId: string, label: string): string;
- /**
- * Create a trusted types policy (same API as window.trustedTypes.createPolicy)
- */
- createTrustedTypesPolicy?(
- policyName: string,
- policyOptions?: ITrustedTypePolicyOptions,
- ): undefined | ITrustedTypePolicy;
- }
- export interface ITrustedTypePolicyOptions {
- createHTML?: (input: string, ...arguments: any[]) => string;
- createScript?: (input: string, ...arguments: any[]) => string;
- createScriptURL?: (input: string, ...arguments: any[]) => string;
- }
- export interface ITrustedTypePolicy {
- readonly name: string;
- createHTML?(input: string): any;
- createScript?(input: string): any;
- createScriptURL?(input: string): any;
- }
- export interface IDisposable {
- dispose(): void;
- }
- export interface IEvent<T> {
- (listener: (e: T) => any, thisArg?: any): IDisposable;
- }
- /**
- * A helper that allows to emit and listen to typed events
- */
- export class Emitter<T> {
- constructor();
- readonly event: IEvent<T>;
- fire(event: T): void;
- dispose(): void;
- }
- export enum MarkerTag {
- Unnecessary = 1,
- Deprecated = 2
- }
- export enum MarkerSeverity {
- Hint = 1,
- Info = 2,
- Warning = 4,
- Error = 8
- }
- export class CancellationTokenSource {
- constructor(parent?: CancellationToken);
- get token(): CancellationToken;
- cancel(): void;
- dispose(cancel?: boolean): void;
- }
- export interface CancellationToken {
- /**
- * A flag signalling is cancellation has been requested.
- */
- readonly isCancellationRequested: boolean;
- /**
- * An event which fires when cancellation is requested. This event
- * only ever fires `once` as cancellation can only happen once. Listeners
- * that are registered after cancellation will be called (next event loop run),
- * but also only once.
- *
- * @event
- */
- readonly onCancellationRequested: (listener: (e: any) => any, thisArgs?: any, disposables?: IDisposable[]) => IDisposable;
- }
- /**
- * Uniform Resource Identifier (Uri) http://tools.ietf.org/html/rfc3986.
- * This class is a simple parser which creates the basic component parts
- * (http://tools.ietf.org/html/rfc3986#section-3) with minimal validation
- * and encoding.
- *
- * ```txt
- * foo://example.com:8042/over/there?name=ferret#nose
- * \_/ \______________/\_________/ \_________/ \__/
- * | | | | |
- * scheme authority path query fragment
- * | _____________________|__
- * / \ / \
- * urn:example:animal:ferret:nose
- * ```
- */
- export class Uri implements UriComponents {
- static isUri(thing: any): thing is Uri;
- /**
- * scheme is the 'http' part of 'http://www.example.com/some/path?query#fragment'.
- * The part before the first colon.
- */
- readonly scheme: string;
- /**
- * authority is the 'www.example.com' part of 'http://www.example.com/some/path?query#fragment'.
- * The part between the first double slashes and the next slash.
- */
- readonly authority: string;
- /**
- * path is the '/some/path' part of 'http://www.example.com/some/path?query#fragment'.
- */
- readonly path: string;
- /**
- * query is the 'query' part of 'http://www.example.com/some/path?query#fragment'.
- */
- readonly query: string;
- /**
- * fragment is the 'fragment' part of 'http://www.example.com/some/path?query#fragment'.
- */
- readonly fragment: string;
- /**
- * Returns a string representing the corresponding file system path of this Uri.
- * Will handle UNC paths, normalizes windows drive letters to lower-case, and uses the
- * platform specific path separator.
- *
- * * Will *not* validate the path for invalid characters and semantics.
- * * Will *not* look at the scheme of this Uri.
- * * The result shall *not* be used for display purposes but for accessing a file on disk.
- *
- *
- * The *difference* to `Uri#path` is the use of the platform specific separator and the handling
- * of UNC paths. See the below sample of a file-uri with an authority (UNC path).
- *
- * ```ts
- const u = Uri.parse('file://server/c$/folder/file.txt')
- u.authority === 'server'
- u.path === '/shares/c$/file.txt'
- u.fsPath === '\\server\c$\folder\file.txt'
- ```
- *
- * Using `Uri#path` to read a file (using fs-apis) would not be enough because parts of the path,
- * namely the server name, would be missing. Therefore `Uri#fsPath` exists - it's sugar to ease working
- * with URIs that represent files on disk (`file` scheme).
- */
- get fsPath(): string;
- with(change: {
- scheme?: string;
- authority?: string | null;
- path?: string | null;
- query?: string | null;
- fragment?: string | null;
- }): Uri;
- /**
- * Creates a new Uri from a string, e.g. `http://www.example.com/some/path`,
- * `file:///usr/home`, or `scheme:with/path`.
- *
- * @param value A string which represents an Uri (see `Uri#toString`).
- */
- static parse(value: string, _strict?: boolean): Uri;
- /**
- * Creates a new Uri from a file system path, e.g. `c:\my\files`,
- * `/usr/home`, or `\\server\share\some\path`.
- *
- * The *difference* between `Uri#parse` and `Uri#file` is that the latter treats the argument
- * as path, not as stringified-uri. E.g. `Uri.file(path)` is **not the same as**
- * `Uri.parse('file://' + path)` because the path might contain characters that are
- * interpreted (# and ?). See the following sample:
- * ```ts
- const good = Uri.file('/coding/c#/project1');
- good.scheme === 'file';
- good.path === '/coding/c#/project1';
- good.fragment === '';
- const bad = Uri.parse('file://' + '/coding/c#/project1');
- bad.scheme === 'file';
- bad.path === '/coding/c'; // path is now broken
- bad.fragment === '/project1';
- ```
- *
- * @param path A file system path (see `Uri#fsPath`)
- */
- static file(path: string): Uri;
- /**
- * Creates new Uri from uri components.
- *
- * Unless `strict` is `true` the scheme is defaults to be `file`. This function performs
- * validation and should be used for untrusted uri components retrieved from storage,
- * user input, command arguments etc
- */
- static from(components: UriComponents, strict?: boolean): Uri;
- /**
- * Join a Uri path with path fragments and normalizes the resulting path.
- *
- * @param uri The input Uri.
- * @param pathFragment The path fragment to add to the Uri path.
- * @returns The resulting Uri.
- */
- static joinPath(uri: Uri, ...pathFragment: string[]): Uri;
- /**
- * Creates a string representation for this Uri. It's guaranteed that calling
- * `Uri.parse` with the result of this function creates an Uri which is equal
- * to this Uri.
- *
- * * The result shall *not* be used for display purposes but for externalization or transport.
- * * The result will be encoded using the percentage encoding and encoding happens mostly
- * ignore the scheme-specific encoding rules.
- *
- * @param skipEncoding Do not encode the result, default is `false`
- */
- toString(skipEncoding?: boolean): string;
- toJSON(): UriComponents;
- /**
- * A helper function to revive URIs.
- *
- * **Note** that this function should only be used when receiving Uri#toJSON generated data
- * and that it doesn't do any validation. Use {@link Uri.from} when received "untrusted"
- * uri components such as command arguments or data from storage.
- *
- * @param data The Uri components or Uri to revive.
- * @returns The revived Uri or undefined or null.
- */
- static revive(data: UriComponents | Uri): Uri;
- static revive(data: UriComponents | Uri | undefined): Uri | undefined;
- static revive(data: UriComponents | Uri | null): Uri | null;
- static revive(data: UriComponents | Uri | undefined | null): Uri | undefined | null;
- }
- export interface UriComponents {
- scheme: string;
- authority?: string;
- path?: string;
- query?: string;
- fragment?: string;
- }
- /**
- * Virtual Key Codes, the value does not hold any inherent meaning.
- * Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
- * But these are "more general", as they should work across browsers & OS`s.
- */
- export enum KeyCode {
- DependsOnKbLayout = -1,
- /**
- * Placed first to cover the 0 value of the enum.
- */
- Unknown = 0,
- Backspace = 1,
- Tab = 2,
- Enter = 3,
- Shift = 4,
- Ctrl = 5,
- Alt = 6,
- PauseBreak = 7,
- CapsLock = 8,
- Escape = 9,
- Space = 10,
- PageUp = 11,
- PageDown = 12,
- End = 13,
- Home = 14,
- LeftArrow = 15,
- UpArrow = 16,
- RightArrow = 17,
- DownArrow = 18,
- Insert = 19,
- Delete = 20,
- Digit0 = 21,
- Digit1 = 22,
- Digit2 = 23,
- Digit3 = 24,
- Digit4 = 25,
- Digit5 = 26,
- Digit6 = 27,
- Digit7 = 28,
- Digit8 = 29,
- Digit9 = 30,
- KeyA = 31,
- KeyB = 32,
- KeyC = 33,
- KeyD = 34,
- KeyE = 35,
- KeyF = 36,
- KeyG = 37,
- KeyH = 38,
- KeyI = 39,
- KeyJ = 40,
- KeyK = 41,
- KeyL = 42,
- KeyM = 43,
- KeyN = 44,
- KeyO = 45,
- KeyP = 46,
- KeyQ = 47,
- KeyR = 48,
- KeyS = 49,
- KeyT = 50,
- KeyU = 51,
- KeyV = 52,
- KeyW = 53,
- KeyX = 54,
- KeyY = 55,
- KeyZ = 56,
- Meta = 57,
- ContextMenu = 58,
- F1 = 59,
- F2 = 60,
- F3 = 61,
- F4 = 62,
- F5 = 63,
- F6 = 64,
- F7 = 65,
- F8 = 66,
- F9 = 67,
- F10 = 68,
- F11 = 69,
- F12 = 70,
- F13 = 71,
- F14 = 72,
- F15 = 73,
- F16 = 74,
- F17 = 75,
- F18 = 76,
- F19 = 77,
- F20 = 78,
- F21 = 79,
- F22 = 80,
- F23 = 81,
- F24 = 82,
- NumLock = 83,
- ScrollLock = 84,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the ';:' key
- */
- Semicolon = 85,
- /**
- * For any country/region, the '+' key
- * For the US standard keyboard, the '=+' key
- */
- Equal = 86,
- /**
- * For any country/region, the ',' key
- * For the US standard keyboard, the ',<' key
- */
- Comma = 87,
- /**
- * For any country/region, the '-' key
- * For the US standard keyboard, the '-_' key
- */
- Minus = 88,
- /**
- * For any country/region, the '.' key
- * For the US standard keyboard, the '.>' key
- */
- Period = 89,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the '/?' key
- */
- Slash = 90,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the '`~' key
- */
- Backquote = 91,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the '[{' key
- */
- BracketLeft = 92,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the '\|' key
- */
- Backslash = 93,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the ']}' key
- */
- BracketRight = 94,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- * For the US standard keyboard, the ''"' key
- */
- Quote = 95,
- /**
- * Used for miscellaneous characters; it can vary by keyboard.
- */
- OEM_8 = 96,
- /**
- * Either the angle bracket key or the backslash key on the RT 102-key keyboard.
- */
- IntlBackslash = 97,
- Numpad0 = 98,
- Numpad1 = 99,
- Numpad2 = 100,
- Numpad3 = 101,
- Numpad4 = 102,
- Numpad5 = 103,
- Numpad6 = 104,
- Numpad7 = 105,
- Numpad8 = 106,
- Numpad9 = 107,
- NumpadMultiply = 108,
- NumpadAdd = 109,
- NUMPAD_SEPARATOR = 110,
- NumpadSubtract = 111,
- NumpadDecimal = 112,
- NumpadDivide = 113,
- /**
- * Cover all key codes when IME is processing input.
- */
- KEY_IN_COMPOSITION = 114,
- ABNT_C1 = 115,
- ABNT_C2 = 116,
- AudioVolumeMute = 117,
- AudioVolumeUp = 118,
- AudioVolumeDown = 119,
- BrowserSearch = 120,
- BrowserHome = 121,
- BrowserBack = 122,
- BrowserForward = 123,
- MediaTrackNext = 124,
- MediaTrackPrevious = 125,
- MediaStop = 126,
- MediaPlayPause = 127,
- LaunchMediaPlayer = 128,
- LaunchMail = 129,
- LaunchApp2 = 130,
- /**
- * VK_CLEAR, 0x0C, CLEAR key
- */
- Clear = 131,
- /**
- * Placed last to cover the length of the enum.
- * Please do not depend on this value!
- */
- MAX_VALUE = 132
- }
- export class KeyMod {
- static readonly CtrlCmd: number;
- static readonly Shift: number;
- static readonly Alt: number;
- static readonly WinCtrl: number;
- static chord(firstPart: number, secondPart: number): number;
- }
- export interface IMarkdownString {
- readonly value: string;
- readonly isTrusted?: boolean | MarkdownStringTrustedOptions;
- readonly supportThemeIcons?: boolean;
- readonly supportHtml?: boolean;
- readonly baseUri?: UriComponents;
- uris?: {
- [href: string]: UriComponents;
- };
- }
- export interface MarkdownStringTrustedOptions {
- readonly enabledCommands: readonly string[];
- }
- export interface IKeyboardEvent {
- readonly _standardKeyboardEventBrand: true;
- readonly browserEvent: KeyboardEvent;
- readonly target: HTMLElement;
- readonly ctrlKey: boolean;
- readonly shiftKey: boolean;
- readonly altKey: boolean;
- readonly metaKey: boolean;
- readonly altGraphKey: boolean;
- readonly keyCode: KeyCode;
- readonly code: string;
- equals(keybinding: number): boolean;
- preventDefault(): void;
- stopPropagation(): void;
- }
- export interface IMouseEvent {
- readonly browserEvent: MouseEvent;
- readonly leftButton: boolean;
- readonly middleButton: boolean;
- readonly rightButton: boolean;
- readonly buttons: number;
- readonly target: HTMLElement;
- readonly detail: number;
- readonly posx: number;
- readonly posy: number;
- readonly ctrlKey: boolean;
- readonly shiftKey: boolean;
- readonly altKey: boolean;
- readonly metaKey: boolean;
- readonly timestamp: number;
- preventDefault(): void;
- stopPropagation(): void;
- }
- export interface IScrollEvent {
- readonly scrollTop: number;
- readonly scrollLeft: number;
- readonly scrollWidth: number;
- readonly scrollHeight: number;
- readonly scrollTopChanged: boolean;
- readonly scrollLeftChanged: boolean;
- readonly scrollWidthChanged: boolean;
- readonly scrollHeightChanged: boolean;
- }
- /**
- * A position in the editor. This interface is suitable for serialization.
- */
- export interface IPosition {
- /**
- * line number (starts at 1)
- */
- readonly lineNumber: number;
- /**
- * column (the first character in a line is between column 1 and column 2)
- */
- readonly column: number;
- }
- /**
- * A position in the editor.
- */
- export class Position {
- /**
- * line number (starts at 1)
- */
- readonly lineNumber: number;
- /**
- * column (the first character in a line is between column 1 and column 2)
- */
- readonly column: number;
- constructor(lineNumber: number, column: number);
- /**
- * Create a new position from this position.
- *
- * @param newLineNumber new line number
- * @param newColumn new column
- */
- with(newLineNumber?: number, newColumn?: number): Position;
- /**
- * Derive a new position from this position.
- *
- * @param deltaLineNumber line number delta
- * @param deltaColumn column delta
- */
- delta(deltaLineNumber?: number, deltaColumn?: number): Position;
- /**
- * Test if this position equals other position
- */
- equals(other: IPosition): boolean;
- /**
- * Test if position `a` equals position `b`
- */
- static equals(a: IPosition | null, b: IPosition | null): boolean;
- /**
- * Test if this position is before other position.
- * If the two positions are equal, the result will be false.
- */
- isBefore(other: IPosition): boolean;
- /**
- * Test if position `a` is before position `b`.
- * If the two positions are equal, the result will be false.
- */
- static isBefore(a: IPosition, b: IPosition): boolean;
- /**
- * Test if this position is before other position.
- * If the two positions are equal, the result will be true.
- */
- isBeforeOrEqual(other: IPosition): boolean;
- /**
- * Test if position `a` is before position `b`.
- * If the two positions are equal, the result will be true.
- */
- static isBeforeOrEqual(a: IPosition, b: IPosition): boolean;
- /**
- * A function that compares positions, useful for sorting
- */
- static compare(a: IPosition, b: IPosition): number;
- /**
- * Clone this position.
- */
- clone(): Position;
- /**
- * Convert to a human-readable representation.
- */
- toString(): string;
- /**
- * Create a `Position` from an `IPosition`.
- */
- static lift(pos: IPosition): Position;
- /**
- * Test if `obj` is an `IPosition`.
- */
- static isIPosition(obj: any): obj is IPosition;
- }
- /**
- * A range in the editor. This interface is suitable for serialization.
- */
- export interface IRange {
- /**
- * Line number on which the range starts (starts at 1).
- */
- readonly startLineNumber: number;
- /**
- * Column on which the range starts in line `startLineNumber` (starts at 1).
- */
- readonly startColumn: number;
- /**
- * Line number on which the range ends.
- */
- readonly endLineNumber: number;
- /**
- * Column on which the range ends in line `endLineNumber`.
- */
- readonly endColumn: number;
- }
- /**
- * A range in the editor. (startLineNumber,startColumn) is <= (endLineNumber,endColumn)
- */
- export class Range {
- /**
- * Line number on which the range starts (starts at 1).
- */
- readonly startLineNumber: number;
- /**
- * Column on which the range starts in line `startLineNumber` (starts at 1).
- */
- readonly startColumn: number;
- /**
- * Line number on which the range ends.
- */
- readonly endLineNumber: number;
- /**
- * Column on which the range ends in line `endLineNumber`.
- */
- readonly endColumn: number;
- constructor(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number);
- /**
- * Test if this range is empty.
- */
- isEmpty(): boolean;
- /**
- * Test if `range` is empty.
- */
- static isEmpty(range: IRange): boolean;
- /**
- * Test if position is in this range. If the position is at the edges, will return true.
- */
- containsPosition(position: IPosition): boolean;
- /**
- * Test if `position` is in `range`. If the position is at the edges, will return true.
- */
- static containsPosition(range: IRange, position: IPosition): boolean;
- /**
- * Test if range is in this range. If the range is equal to this range, will return true.
- */
- containsRange(range: IRange): boolean;
- /**
- * Test if `otherRange` is in `range`. If the ranges are equal, will return true.
- */
- static containsRange(range: IRange, otherRange: IRange): boolean;
- /**
- * Test if `range` is strictly in this range. `range` must start after and end before this range for the result to be true.
- */
- strictContainsRange(range: IRange): boolean;
- /**
- * Test if `otherRange` is strictly in `range` (must start after, and end before). If the ranges are equal, will return false.
- */
- static strictContainsRange(range: IRange, otherRange: IRange): boolean;
- /**
- * A reunion of the two ranges.
- * The smallest position will be used as the start point, and the largest one as the end point.
- */
- plusRange(range: IRange): Range;
- /**
- * A reunion of the two ranges.
- * The smallest position will be used as the start point, and the largest one as the end point.
- */
- static plusRange(a: IRange, b: IRange): Range;
- /**
- * A intersection of the two ranges.
- */
- intersectRanges(range: IRange): Range | null;
- /**
- * A intersection of the two ranges.
- */
- static intersectRanges(a: IRange, b: IRange): Range | null;
- /**
- * Test if this range equals other.
- */
- equalsRange(other: IRange | null | undefined): boolean;
- /**
- * Test if range `a` equals `b`.
- */
- static equalsRange(a: IRange | null | undefined, b: IRange | null | undefined): boolean;
- /**
- * Return the end position (which will be after or equal to the start position)
- */
- getEndPosition(): Position;
- /**
- * Return the end position (which will be after or equal to the start position)
- */
- static getEndPosition(range: IRange): Position;
- /**
- * Return the start position (which will be before or equal to the end position)
- */
- getStartPosition(): Position;
- /**
- * Return the start position (which will be before or equal to the end position)
- */
- static getStartPosition(range: IRange): Position;
- /**
- * Transform to a user presentable string representation.
- */
- toString(): string;
- /**
- * Create a new range using this range's start position, and using endLineNumber and endColumn as the end position.
- */
- setEndPosition(endLineNumber: number, endColumn: number): Range;
- /**
- * Create a new range using this range's end position, and using startLineNumber and startColumn as the start position.
- */
- setStartPosition(startLineNumber: number, startColumn: number): Range;
- /**
- * Create a new empty range using this range's start position.
- */
- collapseToStart(): Range;
- /**
- * Create a new empty range using this range's start position.
- */
- static collapseToStart(range: IRange): Range;
- /**
- * Create a new empty range using this range's end position.
- */
- collapseToEnd(): Range;
- /**
- * Create a new empty range using this range's end position.
- */
- static collapseToEnd(range: IRange): Range;
- /**
- * Moves the range by the given amount of lines.
- */
- delta(lineCount: number): Range;
- static fromPositions(start: IPosition, end?: IPosition): Range;
- /**
- * Create a `Range` from an `IRange`.
- */
- static lift(range: undefined | null): null;
- static lift(range: IRange): Range;
- static lift(range: IRange | undefined | null): Range | null;
- /**
- * Test if `obj` is an `IRange`.
- */
- static isIRange(obj: any): obj is IRange;
- /**
- * Test if the two ranges are touching in any way.
- */
- static areIntersectingOrTouching(a: IRange, b: IRange): boolean;
- /**
- * Test if the two ranges are intersecting. If the ranges are touching it returns true.
- */
- static areIntersecting(a: IRange, b: IRange): boolean;
- /**
- * A function that compares ranges, useful for sorting ranges
- * It will first compare ranges on the startPosition and then on the endPosition
- */
- static compareRangesUsingStarts(a: IRange | null | undefined, b: IRange | null | undefined): number;
- /**
- * A function that compares ranges, useful for sorting ranges
- * It will first compare ranges on the endPosition and then on the startPosition
- */
- static compareRangesUsingEnds(a: IRange, b: IRange): number;
- /**
- * Test if the range spans multiple lines.
- */
- static spansMultipleLines(range: IRange): boolean;
- toJSON(): IRange;
- }
- /**
- * A selection in the editor.
- * The selection is a range that has an orientation.
- */
- export interface ISelection {
- /**
- * The line number on which the selection has started.
- */
- readonly selectionStartLineNumber: number;
- /**
- * The column on `selectionStartLineNumber` where the selection has started.
- */
- readonly selectionStartColumn: number;
- /**
- * The line number on which the selection has ended.
- */
- readonly positionLineNumber: number;
- /**
- * The column on `positionLineNumber` where the selection has ended.
- */
- readonly positionColumn: number;
- }
- /**
- * A selection in the editor.
- * The selection is a range that has an orientation.
- */
- export class Selection extends Range {
- /**
- * The line number on which the selection has started.
- */
- readonly selectionStartLineNumber: number;
- /**
- * The column on `selectionStartLineNumber` where the selection has started.
- */
- readonly selectionStartColumn: number;
- /**
- * The line number on which the selection has ended.
- */
- readonly positionLineNumber: number;
- /**
- * The column on `positionLineNumber` where the selection has ended.
- */
- readonly positionColumn: number;
- constructor(selectionStartLineNumber: number, selectionStartColumn: number, positionLineNumber: number, positionColumn: number);
- /**
- * Transform to a human-readable representation.
- */
- toString(): string;
- /**
- * Test if equals other selection.
- */
- equalsSelection(other: ISelection): boolean;
- /**
- * Test if the two selections are equal.
- */
- static selectionsEqual(a: ISelection, b: ISelection): boolean;
- /**
- * Get directions (LTR or RTL).
- */
- getDirection(): SelectionDirection;
- /**
- * Create a new selection with a different `positionLineNumber` and `positionColumn`.
- */
- setEndPosition(endLineNumber: number, endColumn: number): Selection;
- /**
- * Get the position at `positionLineNumber` and `positionColumn`.
- */
- getPosition(): Position;
- /**
- * Get the position at the start of the selection.
- */
- getSelectionStart(): Position;
- /**
- * Create a new selection with a different `selectionStartLineNumber` and `selectionStartColumn`.
- */
- setStartPosition(startLineNumber: number, startColumn: number): Selection;
- /**
- * Create a `Selection` from one or two positions
- */
- static fromPositions(start: IPosition, end?: IPosition): Selection;
- /**
- * Creates a `Selection` from a range, given a direction.
- */
- static fromRange(range: Range, direction: SelectionDirection): Selection;
- /**
- * Create a `Selection` from an `ISelection`.
- */
- static liftSelection(sel: ISelection): Selection;
- /**
- * `a` equals `b`.
- */
- static selectionsArrEqual(a: ISelection[], b: ISelection[]): boolean;
- /**
- * Test if `obj` is an `ISelection`.
- */
- static isISelection(obj: any): obj is ISelection;
- /**
- * Create with a direction.
- */
- static createWithDirection(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, direction: SelectionDirection): Selection;
- }
- /**
- * The direction of a selection.
- */
- export enum SelectionDirection {
- /**
- * The selection starts above where it ends.
- */
- LTR = 0,
- /**
- * The selection starts below where it ends.
- */
- RTL = 1
- }
- export class Token {
- readonly offset: number;
- readonly type: string;
- readonly language: string;
- _tokenBrand: void;
- constructor(offset: number, type: string, language: string);
- toString(): string;
- }
- }
- declare namespace monaco.editor {
- export interface IDiffNavigator {
- canNavigate(): boolean;
- next(): void;
- previous(): void;
- dispose(): void;
- }
- /**
- * Create a new editor under `domElement`.
- * `domElement` should be empty (not contain other dom nodes).
- * The editor will read the size of `domElement`.
- */
- export function create(domElement: HTMLElement, options?: IStandaloneEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneCodeEditor;
- /**
- * Emitted when an editor is created.
- * Creating a diff editor might cause this listener to be invoked with the two editors.
- * @event
- */
- export function onDidCreateEditor(listener: (codeEditor: ICodeEditor) => void): IDisposable;
- /**
- * Emitted when an diff editor is created.
- * @event
- */
- export function onDidCreateDiffEditor(listener: (diffEditor: IDiffEditor) => void): IDisposable;
- /**
- * Get all the created editors.
- */
- export function getEditors(): readonly ICodeEditor[];
- /**
- * Get all the created diff editors.
- */
- export function getDiffEditors(): readonly IDiffEditor[];
- /**
- * Create a new diff editor under `domElement`.
- * `domElement` should be empty (not contain other dom nodes).
- * The editor will read the size of `domElement`.
- */
- export function createDiffEditor(domElement: HTMLElement, options?: IStandaloneDiffEditorConstructionOptions, override?: IEditorOverrideServices): IStandaloneDiffEditor;
- export interface IDiffNavigatorOptions {
- readonly followsCaret?: boolean;
- readonly ignoreCharChanges?: boolean;
- readonly alwaysRevealFirst?: boolean;
- }
- export function createDiffNavigator(diffEditor: IStandaloneDiffEditor, opts?: IDiffNavigatorOptions): IDiffNavigator;
- /**
- * Description of a command contribution
- */
- export interface ICommandDescriptor {
- /**
- * An unique identifier of the contributed command.
- */
- id: string;
- /**
- * Callback that will be executed when the command is triggered.
- */
- run: ICommandHandler;
- }
- /**
- * Add a command.
- */
- export function addCommand(descriptor: ICommandDescriptor): IDisposable;
- /**
- * Add an action to all editors.
- */
- export function addEditorAction(descriptor: IActionDescriptor): IDisposable;
- /**
- * A keybinding rule.
- */
- export interface IKeybindingRule {
- keybinding: number;
- command?: string | null;
- commandArgs?: any;
- when?: string | null;
- }
- /**
- * Add a keybinding rule.
- */
- export function addKeybindingRule(rule: IKeybindingRule): IDisposable;
- /**
- * Add keybinding rules.
- */
- export function addKeybindingRules(rules: IKeybindingRule[]): IDisposable;
- /**
- * Create a new editor model.
- * You can specify the language that should be set for this model or let the language be inferred from the `uri`.
- */
- export function createModel(value: string, language?: string, uri?: Uri): ITextModel;
- /**
- * Change the language for a model.
- */
- export function setModelLanguage(model: ITextModel, mimeTypeOrLanguageId: string): void;
- /**
- * Set the markers for a model.
- */
- export function setModelMarkers(model: ITextModel, owner: string, markers: IMarkerData[]): void;
- /**
- * Remove all markers of an owner.
- */
- export function removeAllMarkers(owner: string): void;
- /**
- * Get markers for owner and/or resource
- *
- * @returns list of markers
- */
- export function getModelMarkers(filter: {
- owner?: string;
- resource?: Uri;
- take?: number;
- }): IMarker[];
- /**
- * Emitted when markers change for a model.
- * @event
- */
- export function onDidChangeMarkers(listener: (e: readonly Uri[]) => void): IDisposable;
- /**
- * Get the model that has `uri` if it exists.
- */
- export function getModel(uri: Uri): ITextModel | null;
- /**
- * Get all the created models.
- */
- export function getModels(): ITextModel[];
- /**
- * Emitted when a model is created.
- * @event
- */
- export function onDidCreateModel(listener: (model: ITextModel) => void): IDisposable;
- /**
- * Emitted right before a model is disposed.
- * @event
- */
- export function onWillDisposeModel(listener: (model: ITextModel) => void): IDisposable;
- /**
- * Emitted when a different language is set to a model.
- * @event
- */
- export function onDidChangeModelLanguage(listener: (e: {
- readonly model: ITextModel;
- readonly oldLanguage: string;
- }) => void): IDisposable;
- /**
- * Create a new web worker that has model syncing capabilities built in.
- * Specify an AMD module to load that will `create` an object that will be proxied.
- */
- export function createWebWorker<T extends object>(opts: IWebWorkerOptions): MonacoWebWorker<T>;
- /**
- * Colorize the contents of `domNode` using attribute `data-lang`.
- */
- export function colorizeElement(domNode: HTMLElement, options: IColorizerElementOptions): Promise<void>;
- /**
- * Colorize `text` using language `languageId`.
- */
- export function colorize(text: string, languageId: string, options: IColorizerOptions): Promise<string>;
- /**
- * Colorize a line in a model.
- */
- export function colorizeModelLine(model: ITextModel, lineNumber: number, tabSize?: number): string;
- /**
- * Tokenize `text` using language `languageId`
- */
- export function tokenize(text: string, languageId: string): Token[][];
- /**
- * Define a new theme or update an existing theme.
- */
- export function defineTheme(themeName: string, themeData: IStandaloneThemeData): void;
- /**
- * Switches to a theme.
- */
- export function setTheme(themeName: string): void;
- /**
- * Clears all cached font measurements and triggers re-measurement.
- */
- export function remeasureFonts(): void;
- /**
- * Register a command.
- */
- export function registerCommand(id: string, handler: (accessor: any, ...args: any[]) => void): IDisposable;
- export interface ILinkOpener {
- open(resource: Uri): boolean | Promise<boolean>;
- }
- /**
- * Registers a handler that is called when a link is opened in any editor. The handler callback should return `true` if the link was handled and `false` otherwise.
- * The handler that was registered last will be called first when a link is opened.
- *
- * Returns a disposable that can unregister the opener again.
- */
- export function registerLinkOpener(opener: ILinkOpener): IDisposable;
- /**
- * Represents an object that can handle editor open operations (e.g. when "go to definition" is called
- * with a resource other than the current model).
- */
- export interface ICodeEditorOpener {
- /**
- * Callback that is invoked when a resource other than the current model should be opened (e.g. when "go to definition" is called).
- * The callback should return `true` if the request was handled and `false` otherwise.
- * @param source The code editor instance that initiated the request.
- * @param resource The Uri of the resource that should be opened.
- * @param selectionOrPosition An optional position or selection inside the model corresponding to `resource` that can be used to set the cursor.
- */
- openCodeEditor(source: ICodeEditor, resource: Uri, selectionOrPosition?: IRange | IPosition): boolean | Promise<boolean>;
- }
- /**
- * Registers a handler that is called when a resource other than the current model should be opened in the editor (e.g. "go to definition").
- * The handler callback should return `true` if the request was handled and `false` otherwise.
- *
- * Returns a disposable that can unregister the opener again.
- *
- * If no handler is registered the default behavior is to do nothing for models other than the currently attached one.
- */
- export function registerEditorOpener(opener: ICodeEditorOpener): IDisposable;
- export type BuiltinTheme = 'vs' | 'vs-dark' | 'hc-black' | 'hc-light';
- export interface IStandaloneThemeData {
- base: BuiltinTheme;
- inherit: boolean;
- rules: ITokenThemeRule[];
- encodedTokensColors?: string[];
- colors: IColors;
- }
- export type IColors = {
- [colorId: string]: string;
- };
- export interface ITokenThemeRule {
- token: string;
- foreground?: string;
- background?: string;
- fontStyle?: string;
- }
- /**
- * A web worker that can provide a proxy to an arbitrary file.
- */
- export interface MonacoWebWorker<T> {
- /**
- * Terminate the web worker, thus invalidating the returned proxy.
- */
- dispose(): void;
- /**
- * Get a proxy to the arbitrary loaded code.
- */
- getProxy(): Promise<T>;
- /**
- * Synchronize (send) the models at `resources` to the web worker,
- * making them available in the monaco.worker.getMirrorModels().
- */
- withSyncedResources(resources: Uri[]): Promise<T>;
- }
- export interface IWebWorkerOptions {
- /**
- * The AMD moduleId to load.
- * It should export a function `create` that should return the exported proxy.
- */
- moduleId: string;
- /**
- * The data to send over when calling create on the module.
- */
- createData?: any;
- /**
- * A label to be used to identify the web worker for debugging purposes.
- */
- label?: string;
- /**
- * An object that can be used by the web worker to make calls back to the main thread.
- */
- host?: any;
- /**
- * Keep idle models.
- * Defaults to false, which means that idle models will stop syncing after a while.
- */
- keepIdleModels?: boolean;
- }
- /**
- * Description of an action contribution
- */
- export interface IActionDescriptor {
- /**
- * An unique identifier of the contributed action.
- */
- id: string;
- /**
- * A label of the action that will be presented to the user.
- */
- label: string;
- /**
- * Precondition rule.
- */
- precondition?: string;
- /**
- * An array of keybindings for the action.
- */
- keybindings?: number[];
- /**
- * The keybinding rule (condition on top of precondition).
- */
- keybindingContext?: string;
- /**
- * Control if the action should show up in the context menu and where.
- * The context menu of the editor has these default:
- * navigation - The navigation group comes first in all cases.
- * 1_modification - This group comes next and contains commands that modify your code.
- * 9_cutcopypaste - The last default group with the basic editing commands.
- * You can also create your own group.
- * Defaults to null (don't show in context menu).
- */
- contextMenuGroupId?: string;
- /**
- * Control the order in the context menu group.
- */
- contextMenuOrder?: number;
- /**
- * Method that will be executed when the action is triggered.
- * @param editor The editor instance is passed in as a convenience
- */
- run(editor: ICodeEditor, ...args: any[]): void | Promise<void>;
- }
- /**
- * Options which apply for all editors.
- */
- export interface IGlobalEditorOptions {
- /**
- * The number of spaces a tab is equal to.
- * This setting is overridden based on the file contents when `detectIndentation` is on.
- * Defaults to 4.
- */
- tabSize?: number;
- /**
- * Insert spaces when pressing `Tab`.
- * This setting is overridden based on the file contents when `detectIndentation` is on.
- * Defaults to true.
- */
- insertSpaces?: boolean;
- /**
- * Controls whether `tabSize` and `insertSpaces` will be automatically detected when a file is opened based on the file contents.
- * Defaults to true.
- */
- detectIndentation?: boolean;
- /**
- * Remove trailing auto inserted whitespace.
- * Defaults to true.
- */
- trimAutoWhitespace?: boolean;
- /**
- * Special handling for large files to disable certain memory intensive features.
- * Defaults to true.
- */
- largeFileOptimizations?: boolean;
- /**
- * Controls whether completions should be computed based on words in the document.
- * Defaults to true.
- */
- wordBasedSuggestions?: boolean;
- /**
- * Controls whether word based completions should be included from opened documents of the same language or any language.
- */
- wordBasedSuggestionsOnlySameLanguage?: boolean;
- /**
- * Controls whether the semanticHighlighting is shown for the languages that support it.
- * true: semanticHighlighting is enabled for all themes
- * false: semanticHighlighting is disabled for all themes
- * 'configuredByTheme': semanticHighlighting is controlled by the current color theme's semanticHighlighting setting.
- * Defaults to 'byTheme'.
- */
- 'semanticHighlighting.enabled'?: true | false | 'configuredByTheme';
- /**
- * Keep peek editors open even when double-clicking their content or when hitting `Escape`.
- * Defaults to false.
- */
- stablePeek?: boolean;
- /**
- * Lines above this length will not be tokenized for performance reasons.
- * Defaults to 20000.
- */
- maxTokenizationLineLength?: number;
- /**
- * Theme to be used for rendering.
- * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light'.
- * You can create custom themes via `monaco.editor.defineTheme`.
- * To switch a theme, use `monaco.editor.setTheme`.
- * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
- */
- theme?: string;
- /**
- * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
- * Defaults to true.
- */
- autoDetectHighContrast?: boolean;
- }
- /**
- * The options to create an editor.
- */
- export interface IStandaloneEditorConstructionOptions extends IEditorConstructionOptions, IGlobalEditorOptions {
- /**
- * The initial model associated with this code editor.
- */
- model?: ITextModel | null;
- /**
- * The initial value of the auto created model in the editor.
- * To not automatically create a model, use `model: null`.
- */
- value?: string;
- /**
- * The initial language of the auto created model in the editor.
- * To not automatically create a model, use `model: null`.
- */
- language?: string;
- /**
- * Initial theme to be used for rendering.
- * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light.
- * You can create custom themes via `monaco.editor.defineTheme`.
- * To switch a theme, use `monaco.editor.setTheme`.
- * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
- */
- theme?: string;
- /**
- * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
- * Defaults to true.
- */
- autoDetectHighContrast?: boolean;
- /**
- * An URL to open when Ctrl+H (Windows and Linux) or Cmd+H (OSX) is pressed in
- * the accessibility help dialog in the editor.
- *
- * Defaults to "https://go.microsoft.com/fwlink/?linkid=852450"
- */
- accessibilityHelpUrl?: string;
- /**
- * Container element to use for ARIA messages.
- * Defaults to document.body.
- */
- ariaContainerElement?: HTMLElement;
- }
- /**
- * The options to create a diff editor.
- */
- export interface IStandaloneDiffEditorConstructionOptions extends IDiffEditorConstructionOptions {
- /**
- * Initial theme to be used for rendering.
- * The current out-of-the-box available themes are: 'vs' (default), 'vs-dark', 'hc-black', 'hc-light.
- * You can create custom themes via `monaco.editor.defineTheme`.
- * To switch a theme, use `monaco.editor.setTheme`.
- * **NOTE**: The theme might be overwritten if the OS is in high contrast mode, unless `autoDetectHighContrast` is set to false.
- */
- theme?: string;
- /**
- * If enabled, will automatically change to high contrast theme if the OS is using a high contrast theme.
- * Defaults to true.
- */
- autoDetectHighContrast?: boolean;
- }
- export interface IStandaloneCodeEditor extends ICodeEditor {
- updateOptions(newOptions: IEditorOptions & IGlobalEditorOptions): void;
- addCommand(keybinding: number, handler: ICommandHandler, context?: string): string | null;
- createContextKey<T extends ContextKeyValue = ContextKeyValue>(key: string, defaultValue: T): IContextKey<T>;
- addAction(descriptor: IActionDescriptor): IDisposable;
- }
- export interface IStandaloneDiffEditor extends IDiffEditor {
- addCommand(keybinding: number, handler: ICommandHandler, context?: string): string | null;
- createContextKey<T extends ContextKeyValue = ContextKeyValue>(key: string, defaultValue: T): IContextKey<T>;
- addAction(descriptor: IActionDescriptor): IDisposable;
- getOriginalEditor(): IStandaloneCodeEditor;
- getModifiedEditor(): IStandaloneCodeEditor;
- }
- export interface ICommandHandler {
- (...args: any[]): void;
- }
- export interface IContextKey<T extends ContextKeyValue = ContextKeyValue> {
- set(value: T): void;
- reset(): void;
- get(): T | undefined;
- }
- export type ContextKeyValue = null | undefined | boolean | number | string | Array<null | undefined | boolean | number | string> | Record<string, null | undefined | boolean | number | string>;
- export interface IEditorOverrideServices {
- [index: string]: any;
- }
- export interface IMarker {
- owner: string;
- resource: Uri;
- severity: MarkerSeverity;
- code?: string | {
- value: string;
- target: Uri;
- };
- message: string;
- source?: string;
- startLineNumber: number;
- startColumn: number;
- endLineNumber: number;
- endColumn: number;
- modelVersionId?: number;
- relatedInformation?: IRelatedInformation[];
- tags?: MarkerTag[];
- }
- /**
- * A structure defining a problem/warning/etc.
- */
- export interface IMarkerData {
- code?: string | {
- value: string;
- target: Uri;
- };
- severity: MarkerSeverity;
- message: string;
- source?: string;
- startLineNumber: number;
- startColumn: number;
- endLineNumber: number;
- endColumn: number;
- modelVersionId?: number;
- relatedInformation?: IRelatedInformation[];
- tags?: MarkerTag[];
- }
- /**
- *
- */
- export interface IRelatedInformation {
- resource: Uri;
- message: string;
- startLineNumber: number;
- startColumn: number;
- endLineNumber: number;
- endColumn: number;
- }
- export interface IColorizerOptions {
- tabSize?: number;
- }
- export interface IColorizerElementOptions extends IColorizerOptions {
- theme?: string;
- mimeType?: string;
- }
- export enum ScrollbarVisibility {
- Auto = 1,
- Hidden = 2,
- Visible = 3
- }
- export interface ThemeColor {
- id: string;
- }
- /**
- * A single edit operation, that acts as a simple replace.
- * i.e. Replace text at `range` with `text` in model.
- */
- export interface ISingleEditOperation {
- /**
- * The range to replace. This can be empty to emulate a simple insert.
- */
- range: IRange;
- /**
- * The text to replace with. This can be null to emulate a simple delete.
- */
- text: string | null;
- /**
- * This indicates that this operation has "insert" semantics.
- * i.e. forceMoveMarkers = true => if `range` is collapsed, all markers at the position will be moved.
- */
- forceMoveMarkers?: boolean;
- }
- /**
- * Word inside a model.
- */
- export interface IWordAtPosition {
- /**
- * The word.
- */
- readonly word: string;
- /**
- * The column where the word starts.
- */
- readonly startColumn: number;
- /**
- * The column where the word ends.
- */
- readonly endColumn: number;
- }
- /**
- * Vertical Lane in the overview ruler of the editor.
- */
- export enum OverviewRulerLane {
- Left = 1,
- Center = 2,
- Right = 4,
- Full = 7
- }
- /**
- * Vertical Lane in the glyph margin of the editor.
- */
- export enum GlyphMarginLane {
- Left = 1,
- Right = 2
- }
- /**
- * Position in the minimap to render the decoration.
- */
- export enum MinimapPosition {
- Inline = 1,
- Gutter = 2
- }
- export interface IDecorationOptions {
- /**
- * CSS color to render.
- * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry
- */
- color: string | ThemeColor | undefined;
- /**
- * CSS color to render.
- * e.g.: rgba(100, 100, 100, 0.5) or a color from the color registry
- */
- darkColor?: string | ThemeColor;
- }
- export interface IModelDecorationGlyphMarginOptions {
- /**
- * The position in the glyph margin.
- */
- position: GlyphMarginLane;
- }
- /**
- * Options for rendering a model decoration in the overview ruler.
- */
- export interface IModelDecorationOverviewRulerOptions extends IDecorationOptions {
- /**
- * The position in the overview ruler.
- */
- position: OverviewRulerLane;
- }
- /**
- * Options for rendering a model decoration in the minimap.
- */
- export interface IModelDecorationMinimapOptions extends IDecorationOptions {
- /**
- * The position in the minimap.
- */
- position: MinimapPosition;
- }
- /**
- * Options for a model decoration.
- */
- export interface IModelDecorationOptions {
- /**
- * Customize the growing behavior of the decoration when typing at the edges of the decoration.
- * Defaults to TrackedRangeStickiness.AlwaysGrowsWhenTypingAtEdges
- */
- stickiness?: TrackedRangeStickiness;
- /**
- * CSS class name describing the decoration.
- */
- className?: string | null;
- /**
- * Indicates whether the decoration should span across the entire line when it continues onto the next line.
- */
- shouldFillLineOnLineBreak?: boolean | null;
- blockClassName?: string | null;
- /**
- * Indicates if this block should be rendered after the last line.
- * In this case, the range must be empty and set to the last line.
- */
- blockIsAfterEnd?: boolean | null;
- blockDoesNotCollapse?: boolean | null;
- blockPadding?: [top: number, right: number, bottom: number, left: number] | null;
- /**
- * Message to be rendered when hovering over the glyph margin decoration.
- */
- glyphMarginHoverMessage?: IMarkdownString | IMarkdownString[] | null;
- /**
- * Array of MarkdownString to render as the decoration message.
- */
- hoverMessage?: IMarkdownString | IMarkdownString[] | null;
- /**
- * Should the decoration expand to encompass a whole line.
- */
- isWholeLine?: boolean;
- /**
- * Always render the decoration (even when the range it encompasses is collapsed).
- */
- showIfCollapsed?: boolean;
- /**
- * Specifies the stack order of a decoration.
- * A decoration with greater stack order is always in front of a decoration with
- * a lower stack order when the decorations are on the same line.
- */
- zIndex?: number;
- /**
- * If set, render this decoration in the overview ruler.
- */
- overviewRuler?: IModelDecorationOverviewRulerOptions | null;
- /**
- * If set, render this decoration in the minimap.
- */
- minimap?: IModelDecorationMinimapOptions | null;
- /**
- * If set, the decoration will be rendered in the glyph margin with this CSS class name.
- */
- glyphMarginClassName?: string | null;
- /**
- * If set and the decoration has {@link glyphMarginClassName} set, render this decoration
- * with the specified {@link IModelDecorationGlyphMarginOptions} in the glyph margin.
- */
- glyphMargin?: IModelDecorationGlyphMarginOptions | null;
- /**
- * If set, the decoration will be rendered in the lines decorations with this CSS class name.
- */
- linesDecorationsClassName?: string | null;
- /**
- * If set, the decoration will be rendered in the lines decorations with this CSS class name, but only for the first line in case of line wrapping.
- */
- firstLineDecorationClassName?: string | null;
- /**
- * If set, the decoration will be rendered in the margin (covering its full width) with this CSS class name.
- */
- marginClassName?: string | null;
- /**
- * If set, the decoration will be rendered inline with the text with this CSS class name.
- * Please use this only for CSS rules that must impact the text. For example, use `className`
- * to have a background color decoration.
- */
- inlineClassName?: string | null;
- /**
- * If there is an `inlineClassName` which affects letter spacing.
- */
- inlineClassNameAffectsLetterSpacing?: boolean;
- /**
- * If set, the decoration will be rendered before the text with this CSS class name.
- */
- beforeContentClassName?: string | null;
- /**
- * If set, the decoration will be rendered after the text with this CSS class name.
- */
- afterContentClassName?: string | null;
- /**
- * If set, text will be injected in the view after the range.
- */
- after?: InjectedTextOptions | null;
- /**
- * If set, text will be injected in the view before the range.
- */
- before?: InjectedTextOptions | null;
- }
- /**
- * Configures text that is injected into the view without changing the underlying document.
- */
- export interface InjectedTextOptions {
- /**
- * Sets the text to inject. Must be a single line.
- */
- readonly content: string;
- /**
- * If set, the decoration will be rendered inline with the text with this CSS class name.
- */
- readonly inlineClassName?: string | null;
- /**
- * If there is an `inlineClassName` which affects letter spacing.
- */
- readonly inlineClassNameAffectsLetterSpacing?: boolean;
- /**
- * This field allows to attach data to this injected text.
- * The data can be read when injected texts at a given position are queried.
- */
- readonly attachedData?: unknown;
- /**
- * Configures cursor stops around injected text.
- * Defaults to {@link InjectedTextCursorStops.Both}.
- */
- readonly cursorStops?: InjectedTextCursorStops | null;
- }
- export enum InjectedTextCursorStops {
- Both = 0,
- Right = 1,
- Left = 2,
- None = 3
- }
- /**
- * New model decorations.
- */
- export interface IModelDeltaDecoration {
- /**
- * Range that this decoration covers.
- */
- range: IRange;
- /**
- * Options associated with this decoration.
- */
- options: IModelDecorationOptions;
- }
- /**
- * A decoration in the model.
- */
- export interface IModelDecoration {
- /**
- * Identifier for a decoration.
- */
- readonly id: string;
- /**
- * Identifier for a decoration's owner.
- */
- readonly ownerId: number;
- /**
- * Range that this decoration covers.
- */
- readonly range: Range;
- /**
- * Options associated with this decoration.
- */
- readonly options: IModelDecorationOptions;
- }
- /**
- * End of line character preference.
- */
- export enum EndOfLinePreference {
- /**
- * Use the end of line character identified in the text buffer.
- */
- TextDefined = 0,
- /**
- * Use line feed (\n) as the end of line character.
- */
- LF = 1,
- /**
- * Use carriage return and line feed (\r\n) as the end of line character.
- */
- CRLF = 2
- }
- /**
- * The default end of line to use when instantiating models.
- */
- export enum DefaultEndOfLine {
- /**
- * Use line feed (\n) as the end of line character.
- */
- LF = 1,
- /**
- * Use carriage return and line feed (\r\n) as the end of line character.
- */
- CRLF = 2
- }
- /**
- * End of line character preference.
- */
- export enum EndOfLineSequence {
- /**
- * Use line feed (\n) as the end of line character.
- */
- LF = 0,
- /**
- * Use carriage return and line feed (\r\n) as the end of line character.
- */
- CRLF = 1
- }
- /**
- * A single edit operation, that has an identifier.
- */
- export interface IIdentifiedSingleEditOperation extends ISingleEditOperation {
- }
- export interface IValidEditOperation {
- /**
- * The range to replace. This can be empty to emulate a simple insert.
- */
- range: Range;
- /**
- * The text to replace with. This can be empty to emulate a simple delete.
- */
- text: string;
- }
- /**
- * A callback that can compute the cursor state after applying a series of edit operations.
- */
- export interface ICursorStateComputer {
- /**
- * A callback that can compute the resulting cursors state after some edit operations have been executed.
- */
- (inverseEditOperations: IValidEditOperation[]): Selection[] | null;
- }
- export class TextModelResolvedOptions {
- _textModelResolvedOptionsBrand: void;
- readonly tabSize: number;
- readonly indentSize: number;
- readonly insertSpaces: boolean;
- readonly defaultEOL: DefaultEndOfLine;
- readonly trimAutoWhitespace: boolean;
- readonly bracketPairColorizationOptions: BracketPairColorizationOptions;
- get originalIndentSize(): number | 'tabSize';
- }
- export interface BracketPairColorizationOptions {
- enabled: boolean;
- independentColorPoolPerBracketType: boolean;
- }
- export interface ITextModelUpdateOptions {
- tabSize?: number;
- indentSize?: number | 'tabSize';
- insertSpaces?: boolean;
- trimAutoWhitespace?: boolean;
- bracketColorizationOptions?: BracketPairColorizationOptions;
- }
- export class FindMatch {
- _findMatchBrand: void;
- readonly range: Range;
- readonly matches: string[] | null;
- }
- /**
- * Describes the behavior of decorations when typing/editing near their edges.
- * Note: Please do not edit the values, as they very carefully match `DecorationRangeBehavior`
- */
- export enum TrackedRangeStickiness {
- AlwaysGrowsWhenTypingAtEdges = 0,
- NeverGrowsWhenTypingAtEdges = 1,
- GrowsOnlyWhenTypingBefore = 2,
- GrowsOnlyWhenTypingAfter = 3
- }
- /**
- * Text snapshot that works like an iterator.
- * Will try to return chunks of roughly ~64KB size.
- * Will return null when finished.
- */
- export interface ITextSnapshot {
- read(): string | null;
- }
- /**
- * A model.
- */
- export interface ITextModel {
- /**
- * Gets the resource associated with this editor model.
- */
- readonly uri: Uri;
- /**
- * A unique identifier associated with this model.
- */
- readonly id: string;
- /**
- * Get the resolved options for this model.
- */
- getOptions(): TextModelResolvedOptions;
- /**
- * Get the current version id of the model.
- * Anytime a change happens to the model (even undo/redo),
- * the version id is incremented.
- */
- getVersionId(): number;
- /**
- * Get the alternative version id of the model.
- * This alternative version id is not always incremented,
- * it will return the same values in the case of undo-redo.
- */
- getAlternativeVersionId(): number;
- /**
- * Replace the entire text buffer value contained in this model.
- */
- setValue(newValue: string | ITextSnapshot): void;
- /**
- * Get the text stored in this model.
- * @param eol The end of line character preference. Defaults to `EndOfLinePreference.TextDefined`.
- * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.
- * @return The text.
- */
- getValue(eol?: EndOfLinePreference, preserveBOM?: boolean): string;
- /**
- * Get the text stored in this model.
- * @param preserverBOM Preserve a BOM character if it was detected when the model was constructed.
- * @return The text snapshot (it is safe to consume it asynchronously).
- */
- createSnapshot(preserveBOM?: boolean): ITextSnapshot;
- /**
- * Get the length of the text stored in this model.
- */
- getValueLength(eol?: EndOfLinePreference, preserveBOM?: boolean): number;
- /**
- * Get the text in a certain range.
- * @param range The range describing what text to get.
- * @param eol The end of line character preference. This will only be used for multiline ranges. Defaults to `EndOfLinePreference.TextDefined`.
- * @return The text.
- */
- getValueInRange(range: IRange, eol?: EndOfLinePreference): string;
- /**
- * Get the length of text in a certain range.
- * @param range The range describing what text length to get.
- * @return The text length.
- */
- getValueLengthInRange(range: IRange, eol?: EndOfLinePreference): number;
- /**
- * Get the character count of text in a certain range.
- * @param range The range describing what text length to get.
- */
- getCharacterCountInRange(range: IRange, eol?: EndOfLinePreference): number;
- /**
- * Get the number of lines in the model.
- */
- getLineCount(): number;
- /**
- * Get the text for a certain line.
- */
- getLineContent(lineNumber: number): string;
- /**
- * Get the text length for a certain line.
- */
- getLineLength(lineNumber: number): number;
- /**
- * Get the text for all lines.
- */
- getLinesContent(): string[];
- /**
- * Get the end of line sequence predominantly used in the text buffer.
- * @return EOL char sequence (e.g.: '\n' or '\r\n').
- */
- getEOL(): string;
- /**
- * Get the end of line sequence predominantly used in the text buffer.
- */
- getEndOfLineSequence(): EndOfLineSequence;
- /**
- * Get the minimum legal column for line at `lineNumber`
- */
- getLineMinColumn(lineNumber: number): number;
- /**
- * Get the maximum legal column for line at `lineNumber`
- */
- getLineMaxColumn(lineNumber: number): number;
- /**
- * Returns the column before the first non whitespace character for line at `lineNumber`.
- * Returns 0 if line is empty or contains only whitespace.
- */
- getLineFirstNonWhitespaceColumn(lineNumber: number): number;
- /**
- * Returns the column after the last non whitespace character for line at `lineNumber`.
- * Returns 0 if line is empty or contains only whitespace.
- */
- getLineLastNonWhitespaceColumn(lineNumber: number): number;
- /**
- * Create a valid position.
- */
- validatePosition(position: IPosition): Position;
- /**
- * Advances the given position by the given offset (negative offsets are also accepted)
- * and returns it as a new valid position.
- *
- * If the offset and position are such that their combination goes beyond the beginning or
- * end of the model, throws an exception.
- *
- * If the offset is such that the new position would be in the middle of a multi-byte
- * line terminator, throws an exception.
- */
- modifyPosition(position: IPosition, offset: number): Position;
- /**
- * Create a valid range.
- */
- validateRange(range: IRange): Range;
- /**
- * Converts the position to a zero-based offset.
- *
- * The position will be [adjusted](#TextDocument.validatePosition).
- *
- * @param position A position.
- * @return A valid zero-based offset.
- */
- getOffsetAt(position: IPosition): number;
- /**
- * Converts a zero-based offset to a position.
- *
- * @param offset A zero-based offset.
- * @return A valid [position](#Position).
- */
- getPositionAt(offset: number): Position;
- /**
- * Get a range covering the entire model.
- */
- getFullModelRange(): Range;
- /**
- * Returns if the model was disposed or not.
- */
- isDisposed(): boolean;
- /**
- * Search the model.
- * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
- * @param searchOnlyEditableRange Limit the searching to only search inside the editable range of the model.
- * @param isRegex Used to indicate that `searchString` is a regular expression.
- * @param matchCase Force the matching to match lower/upper case exactly.
- * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
- * @param captureMatches The result will contain the captured groups.
- * @param limitResultCount Limit the number of results
- * @return The ranges where the matches are. It is empty if not matches have been found.
- */
- findMatches(searchString: string, searchOnlyEditableRange: boolean, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
- /**
- * Search the model.
- * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
- * @param searchScope Limit the searching to only search inside these ranges.
- * @param isRegex Used to indicate that `searchString` is a regular expression.
- * @param matchCase Force the matching to match lower/upper case exactly.
- * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
- * @param captureMatches The result will contain the captured groups.
- * @param limitResultCount Limit the number of results
- * @return The ranges where the matches are. It is empty if no matches have been found.
- */
- findMatches(searchString: string, searchScope: IRange | IRange[], isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean, limitResultCount?: number): FindMatch[];
- /**
- * Search the model for the next match. Loops to the beginning of the model if needed.
- * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
- * @param searchStart Start the searching at the specified position.
- * @param isRegex Used to indicate that `searchString` is a regular expression.
- * @param matchCase Force the matching to match lower/upper case exactly.
- * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
- * @param captureMatches The result will contain the captured groups.
- * @return The range where the next match is. It is null if no next match has been found.
- */
- findNextMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch | null;
- /**
- * Search the model for the previous match. Loops to the end of the model if needed.
- * @param searchString The string used to search. If it is a regular expression, set `isRegex` to true.
- * @param searchStart Start the searching at the specified position.
- * @param isRegex Used to indicate that `searchString` is a regular expression.
- * @param matchCase Force the matching to match lower/upper case exactly.
- * @param wordSeparators Force the matching to match entire words only. Pass null otherwise.
- * @param captureMatches The result will contain the captured groups.
- * @return The range where the previous match is. It is null if no previous match has been found.
- */
- findPreviousMatch(searchString: string, searchStart: IPosition, isRegex: boolean, matchCase: boolean, wordSeparators: string | null, captureMatches: boolean): FindMatch | null;
- /**
- * Get the language associated with this model.
- */
- getLanguageId(): string;
- /**
- * Get the word under or besides `position`.
- * @param position The position to look for a word.
- * @return The word under or besides `position`. Might be null.
- */
- getWordAtPosition(position: IPosition): IWordAtPosition | null;
- /**
- * Get the word under or besides `position` trimmed to `position`.column
- * @param position The position to look for a word.
- * @return The word under or besides `position`. Will never be null.
- */
- getWordUntilPosition(position: IPosition): IWordAtPosition;
- /**
- * Perform a minimum amount of operations, in order to transform the decorations
- * identified by `oldDecorations` to the decorations described by `newDecorations`
- * and returns the new identifiers associated with the resulting decorations.
- *
- * @param oldDecorations Array containing previous decorations identifiers.
- * @param newDecorations Array describing what decorations should result after the call.
- * @param ownerId Identifies the editor id in which these decorations should appear. If no `ownerId` is provided, the decorations will appear in all editors that attach this model.
- * @return An array containing the new decorations identifiers.
- */
- deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[], ownerId?: number): string[];
- /**
- * Get the options associated with a decoration.
- * @param id The decoration id.
- * @return The decoration options or null if the decoration was not found.
- */
- getDecorationOptions(id: string): IModelDecorationOptions | null;
- /**
- * Get the range associated with a decoration.
- * @param id The decoration id.
- * @return The decoration range or null if the decoration was not found.
- */
- getDecorationRange(id: string): Range | null;
- /**
- * Gets all the decorations for the line `lineNumber` as an array.
- * @param lineNumber The line number
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
- * @return An array with the decorations
- */
- getLineDecorations(lineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- /**
- * Gets all the decorations for the lines between `startLineNumber` and `endLineNumber` as an array.
- * @param startLineNumber The start line number
- * @param endLineNumber The end line number
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
- * @return An array with the decorations
- */
- getLinesDecorations(startLineNumber: number, endLineNumber: number, ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- /**
- * Gets all the decorations in a range as an array. Only `startLineNumber` and `endLineNumber` from `range` are used for filtering.
- * So for now it returns all the decorations on the same line as `range`.
- * @param range The range to search in
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
- * @param onlyMinimapDecorations If set, it will return only decorations that render in the minimap.
- * @param onlyMarginDecorations If set, it will return only decorations that render in the glyph margin.
- * @return An array with the decorations
- */
- getDecorationsInRange(range: IRange, ownerId?: number, filterOutValidation?: boolean, onlyMinimapDecorations?: boolean, onlyMarginDecorations?: boolean): IModelDecoration[];
- /**
- * Gets all the decorations as an array.
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
- */
- getAllDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- /**
- * Gets all decorations that render in the glyph margin as an array.
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- */
- getAllMarginDecorations(ownerId?: number): IModelDecoration[];
- /**
- * Gets all the decorations that should be rendered in the overview ruler as an array.
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- * @param filterOutValidation If set, it will ignore decorations specific to validation (i.e. warnings, errors).
- */
- getOverviewRulerDecorations(ownerId?: number, filterOutValidation?: boolean): IModelDecoration[];
- /**
- * Gets all the decorations that contain injected text.
- * @param ownerId If set, it will ignore decorations belonging to other owners.
- */
- getInjectedTextDecorations(ownerId?: number): IModelDecoration[];
- /**
- * Normalize a string containing whitespace according to indentation rules (converts to spaces or to tabs).
- */
- normalizeIndentation(str: string): string;
- /**
- * Change the options of this model.
- */
- updateOptions(newOpts: ITextModelUpdateOptions): void;
- /**
- * Detect the indentation options for this model from its content.
- */
- detectIndentation(defaultInsertSpaces: boolean, defaultTabSize: number): void;
- /**
- * Close the current undo-redo element.
- * This offers a way to create an undo/redo stop point.
- */
- pushStackElement(): void;
- /**
- * Open the current undo-redo element.
- * This offers a way to remove the current undo/redo stop point.
- */
- popStackElement(): void;
- /**
- * Push edit operations, basically editing the model. This is the preferred way
- * of editing the model. The edit operations will land on the undo stack.
- * @param beforeCursorState The cursor state before the edit operations. This cursor state will be returned when `undo` or `redo` are invoked.
- * @param editOperations The edit operations.
- * @param cursorStateComputer A callback that can compute the resulting cursors state after the edit operations have been executed.
- * @return The cursor state returned by the `cursorStateComputer`.
- */
- pushEditOperations(beforeCursorState: Selection[] | null, editOperations: IIdentifiedSingleEditOperation[], cursorStateComputer: ICursorStateComputer): Selection[] | null;
- /**
- * Change the end of line sequence. This is the preferred way of
- * changing the eol sequence. This will land on the undo stack.
- */
- pushEOL(eol: EndOfLineSequence): void;
- /**
- * Edit the model without adding the edits to the undo stack.
- * This can have dire consequences on the undo stack! See @pushEditOperations for the preferred way.
- * @param operations The edit operations.
- * @return If desired, the inverse edit operations, that, when applied, will bring the model back to the previous state.
- */
- applyEdits(operations: IIdentifiedSingleEditOperation[]): void;
- applyEdits(operations: IIdentifiedSingleEditOperation[], computeUndoEdits: false): void;
- applyEdits(operations: IIdentifiedSingleEditOperation[], computeUndoEdits: true): IValidEditOperation[];
- /**
- * Change the end of line sequence without recording in the undo stack.
- * This can have dire consequences on the undo stack! See @pushEOL for the preferred way.
- */
- setEOL(eol: EndOfLineSequence): void;
- /**
- * An event emitted when the contents of the model have changed.
- * @event
- */
- onDidChangeContent(listener: (e: IModelContentChangedEvent) => void): IDisposable;
- /**
- * An event emitted when decorations of the model have changed.
- * @event
- */
- readonly onDidChangeDecorations: IEvent<IModelDecorationsChangedEvent>;
- /**
- * An event emitted when the model options have changed.
- * @event
- */
- readonly onDidChangeOptions: IEvent<IModelOptionsChangedEvent>;
- /**
- * An event emitted when the language associated with the model has changed.
- * @event
- */
- readonly onDidChangeLanguage: IEvent<IModelLanguageChangedEvent>;
- /**
- * An event emitted when the language configuration associated with the model has changed.
- * @event
- */
- readonly onDidChangeLanguageConfiguration: IEvent<IModelLanguageConfigurationChangedEvent>;
- /**
- * An event emitted when the model has been attached to the first editor or detached from the last editor.
- * @event
- */
- readonly onDidChangeAttached: IEvent<void>;
- /**
- * An event emitted right before disposing the model.
- * @event
- */
- readonly onWillDispose: IEvent<void>;
- /**
- * Destroy this model.
- */
- dispose(): void;
- /**
- * Returns if this model is attached to an editor or not.
- */
- isAttachedToEditor(): boolean;
- }
- export enum PositionAffinity {
- /**
- * Prefers the left most position.
- */
- Left = 0,
- /**
- * Prefers the right most position.
- */
- Right = 1,
- /**
- * No preference.
- */
- None = 2,
- /**
- * If the given position is on injected text, prefers the position left of it.
- */
- LeftOfInjectedText = 3,
- /**
- * If the given position is on injected text, prefers the position right of it.
- */
- RightOfInjectedText = 4
- }
- /**
- * A change
- */
- export interface IChange {
- readonly originalStartLineNumber: number;
- readonly originalEndLineNumber: number;
- readonly modifiedStartLineNumber: number;
- readonly modifiedEndLineNumber: number;
- }
- /**
- * A character level change.
- */
- export interface ICharChange extends IChange {
- readonly originalStartColumn: number;
- readonly originalEndColumn: number;
- readonly modifiedStartColumn: number;
- readonly modifiedEndColumn: number;
- }
- /**
- * A line change
- */
- export interface ILineChange extends IChange {
- readonly charChanges: ICharChange[] | undefined;
- }
- /**
- * A document diff provider computes the diff between two text models.
- */
- export interface IDocumentDiffProvider {
- /**
- * Computes the diff between the text models `original` and `modified`.
- */
- computeDiff(original: ITextModel, modified: ITextModel, options: IDocumentDiffProviderOptions): Promise<IDocumentDiff>;
- /**
- * Is fired when settings of the diff algorithm change that could alter the result of the diffing computation.
- * Any user of this provider should recompute the diff when this event is fired.
- */
- onDidChange: IEvent<void>;
- }
- /**
- * Options for the diff computation.
- */
- export interface IDocumentDiffProviderOptions {
- /**
- * When set to true, the diff should ignore whitespace changes.
- */
- ignoreTrimWhitespace: boolean;
- /**
- * A diff computation should throw if it takes longer than this value.
- */
- maxComputationTimeMs: number;
- /**
- * If set, the diff computation should compute moves in addition to insertions and deletions.
- */
- computeMoves: boolean;
- }
- /**
- * Represents a diff between two text models.
- */
- export interface IDocumentDiff {
- /**
- * If true, both text models are identical (byte-wise).
- */
- readonly identical: boolean;
- /**
- * If true, the diff computation timed out and the diff might not be accurate.
- */
- readonly quitEarly: boolean;
- /**
- * Maps all modified line ranges in the original to the corresponding line ranges in the modified text model.
- */
- readonly changes: readonly LineRangeMapping[];
- /**
- * Sorted by original line ranges.
- * The original line ranges and the modified line ranges must be disjoint (but can be touching).
- */
- readonly moves: readonly MovedText[];
- }
- /**
- * A range of lines (1-based).
- */
- export class LineRange {
- static fromRange(range: Range): LineRange;
- static subtract(a: LineRange, b: LineRange | undefined): LineRange[];
- /**
- * @param lineRanges An array of sorted line ranges.
- */
- static joinMany(lineRanges: readonly (readonly LineRange[])[]): readonly LineRange[];
- /**
- * @param lineRanges1 Must be sorted.
- * @param lineRanges2 Must be sorted.
- */
- static join(lineRanges1: readonly LineRange[], lineRanges2: readonly LineRange[]): readonly LineRange[];
- static ofLength(startLineNumber: number, length: number): LineRange;
- /**
- * The start line number.
- */
- readonly startLineNumber: number;
- /**
- * The end line number (exclusive).
- */
- readonly endLineNumberExclusive: number;
- constructor(startLineNumber: number, endLineNumberExclusive: number);
- /**
- * Indicates if this line range contains the given line number.
- */
- contains(lineNumber: number): boolean;
- /**
- * Indicates if this line range is empty.
- */
- get isEmpty(): boolean;
- /**
- * Moves this line range by the given offset of line numbers.
- */
- delta(offset: number): LineRange;
- /**
- * The number of lines this line range spans.
- */
- get length(): number;
- /**
- * Creates a line range that combines this and the given line range.
- */
- join(other: LineRange): LineRange;
- toString(): string;
- /**
- * The resulting range is empty if the ranges do not intersect, but touch.
- * If the ranges don't even touch, the result is undefined.
- */
- intersect(other: LineRange): LineRange | undefined;
- intersectsStrict(other: LineRange): boolean;
- overlapOrTouch(other: LineRange): boolean;
- equals(b: LineRange): boolean;
- toInclusiveRange(): Range | null;
- toExclusiveRange(): Range;
- mapToLineArray<T>(f: (lineNumber: number) => T): T[];
- includes(lineNumber: number): boolean;
- }
- /**
- * Maps a line range in the original text model to a line range in the modified text model.
- */
- export class LineRangeMapping {
- static inverse(mapping: readonly LineRangeMapping[], originalLineCount: number, modifiedLineCount: number): LineRangeMapping[];
- /**
- * The line range in the original text model.
- */
- readonly originalRange: LineRange;
- /**
- * The line range in the modified text model.
- */
- readonly modifiedRange: LineRange;
- /**
- * If inner changes have not been computed, this is set to undefined.
- * Otherwise, it represents the character-level diff in this line range.
- * The original range of each range mapping should be contained in the original line range (same for modified), exceptions are new-lines.
- * Must not be an empty array.
- */
- readonly innerChanges: RangeMapping[] | undefined;
- constructor(originalRange: LineRange, modifiedRange: LineRange, innerChanges: RangeMapping[] | undefined);
- toString(): string;
- get changedLineCount(): any;
- flip(): LineRangeMapping;
- }
- /**
- * Maps a range in the original text model to a range in the modified text model.
- */
- export class RangeMapping {
- /**
- * The original range.
- */
- readonly originalRange: Range;
- /**
- * The modified range.
- */
- readonly modifiedRange: Range;
- constructor(originalRange: Range, modifiedRange: Range);
- toString(): string;
- flip(): RangeMapping;
- }
- export class MovedText {
- readonly lineRangeMapping: SimpleLineRangeMapping;
- /**
- * The diff from the original text to the moved text.
- * Must be contained in the original/modified line range.
- * Can be empty if the text didn't change (only moved).
- */
- readonly changes: readonly LineRangeMapping[];
- constructor(lineRangeMapping: SimpleLineRangeMapping, changes: readonly LineRangeMapping[]);
- flip(): MovedText;
- }
- export class SimpleLineRangeMapping {
- readonly originalRange: LineRange;
- readonly modifiedRange: LineRange;
- constructor(originalRange: LineRange, modifiedRange: LineRange);
- toString(): string;
- flip(): SimpleLineRangeMapping;
- }
- export interface IDimension {
- width: number;
- height: number;
- }
- /**
- * A builder and helper for edit operations for a command.
- */
- export interface IEditOperationBuilder {
- /**
- * Add a new edit operation (a replace operation).
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addEditOperation(range: IRange, text: string | null, forceMoveMarkers?: boolean): void;
- /**
- * Add a new edit operation (a replace operation).
- * The inverse edits will be accessible in `ICursorStateComputerData.getInverseEditOperations()`
- * @param range The range to replace (delete). May be empty to represent a simple insert.
- * @param text The text to replace with. May be null to represent a simple delete.
- */
- addTrackedEditOperation(range: IRange, text: string | null, forceMoveMarkers?: boolean): void;
- /**
- * Track `selection` when applying edit operations.
- * A best effort will be made to not grow/expand the selection.
- * An empty selection will clamp to a nearby character.
- * @param selection The selection to track.
- * @param trackPreviousOnEmpty If set, and the selection is empty, indicates whether the selection
- * should clamp to the previous or the next character.
- * @return A unique identifier.
- */
- trackSelection(selection: Selection, trackPreviousOnEmpty?: boolean): string;
- }
- /**
- * A helper for computing cursor state after a command.
- */
- export interface ICursorStateComputerData {
- /**
- * Get the inverse edit operations of the added edit operations.
- */
- getInverseEditOperations(): IValidEditOperation[];
- /**
- * Get a previously tracked selection.
- * @param id The unique identifier returned by `trackSelection`.
- * @return The selection.
- */
- getTrackedSelection(id: string): Selection;
- }
- /**
- * A command that modifies text / cursor state on a model.
- */
- export interface ICommand {
- /**
- * Get the edit operations needed to execute this command.
- * @param model The model the command will execute on.
- * @param builder A helper to collect the needed edit operations and to track selections.
- */
- getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void;
- /**
- * Compute the cursor state after the edit operations were applied.
- * @param model The model the command has executed on.
- * @param helper A helper to get inverse edit operations and to get previously tracked selections.
- * @return The cursor state after the command executed.
- */
- computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection;
- }
- /**
- * A model for the diff editor.
- */
- export interface IDiffEditorModel {
- /**
- * Original model.
- */
- original: ITextModel;
- /**
- * Modified model.
- */
- modified: ITextModel;
- }
- export interface IDiffEditorViewModel {
- readonly model: IDiffEditorModel;
- waitForDiff(): Promise<void>;
- }
- /**
- * An event describing that an editor has had its model reset (i.e. `editor.setModel()`).
- */
- export interface IModelChangedEvent {
- /**
- * The `uri` of the previous model or null.
- */
- readonly oldModelUrl: Uri | null;
- /**
- * The `uri` of the new model or null.
- */
- readonly newModelUrl: Uri | null;
- }
- export interface IContentSizeChangedEvent {
- readonly contentWidth: number;
- readonly contentHeight: number;
- readonly contentWidthChanged: boolean;
- readonly contentHeightChanged: boolean;
- }
- export interface INewScrollPosition {
- scrollLeft?: number;
- scrollTop?: number;
- }
- export interface IEditorAction {
- readonly id: string;
- readonly label: string;
- readonly alias: string;
- isSupported(): boolean;
- run(args?: unknown): Promise<void>;
- }
- export type IEditorModel = ITextModel | IDiffEditorModel | IDiffEditorViewModel;
- /**
- * A (serializable) state of the cursors.
- */
- export interface ICursorState {
- inSelectionMode: boolean;
- selectionStart: IPosition;
- position: IPosition;
- }
- /**
- * A (serializable) state of the view.
- */
- export interface IViewState {
- /** written by previous versions */
- scrollTop?: number;
- /** written by previous versions */
- scrollTopWithoutViewZones?: number;
- scrollLeft: number;
- firstPosition: IPosition;
- firstPositionDeltaTop: number;
- }
- /**
- * A (serializable) state of the code editor.
- */
- export interface ICodeEditorViewState {
- cursorState: ICursorState[];
- viewState: IViewState;
- contributionsState: {
- [id: string]: any;
- };
- }
- /**
- * (Serializable) View state for the diff editor.
- */
- export interface IDiffEditorViewState {
- original: ICodeEditorViewState | null;
- modified: ICodeEditorViewState | null;
- modelState?: unknown;
- }
- /**
- * An editor view state.
- */
- export type IEditorViewState = ICodeEditorViewState | IDiffEditorViewState;
- export enum ScrollType {
- Smooth = 0,
- Immediate = 1
- }
- /**
- * An editor.
- */
- export interface IEditor {
- /**
- * An event emitted when the editor has been disposed.
- * @event
- */
- onDidDispose(listener: () => void): IDisposable;
- /**
- * Dispose the editor.
- */
- dispose(): void;
- /**
- * Get a unique id for this editor instance.
- */
- getId(): string;
- /**
- * Get the editor type. Please see `EditorType`.
- * This is to avoid an instanceof check
- */
- getEditorType(): string;
- /**
- * Update the editor's options after the editor has been created.
- */
- updateOptions(newOptions: IEditorOptions): void;
- /**
- * Instructs the editor to remeasure its container. This method should
- * be called when the container of the editor gets resized.
- *
- * If a dimension is passed in, the passed in value will be used.
- */
- layout(dimension?: IDimension): void;
- /**
- * Brings browser focus to the editor text
- */
- focus(): void;
- /**
- * Returns true if the text inside this editor is focused (i.e. cursor is blinking).
- */
- hasTextFocus(): boolean;
- /**
- * Returns all actions associated with this editor.
- */
- getSupportedActions(): IEditorAction[];
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): IEditorViewState | null;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: IEditorViewState | null): void;
- /**
- * Given a position, returns a column number that takes tab-widths into account.
- */
- getVisibleColumnFromPosition(position: IPosition): number;
- /**
- * Returns the primary position of the cursor.
- */
- getPosition(): Position | null;
- /**
- * Set the primary position of the cursor. This will remove any secondary cursors.
- * @param position New primary cursor's position
- * @param source Source of the call that caused the position
- */
- setPosition(position: IPosition, source?: string): void;
- /**
- * Scroll vertically as necessary and reveal a line.
- */
- revealLine(lineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal a line centered vertically.
- */
- revealLineInCenter(lineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal a line centered vertically only if it lies outside the viewport.
- */
- revealLineInCenterIfOutsideViewport(lineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal a line close to the top of the viewport,
- * optimized for viewing a code definition.
- */
- revealLineNearTop(lineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a position.
- */
- revealPosition(position: IPosition, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a position centered vertically.
- */
- revealPositionInCenter(position: IPosition, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a position centered vertically only if it lies outside the viewport.
- */
- revealPositionInCenterIfOutsideViewport(position: IPosition, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a position close to the top of the viewport,
- * optimized for viewing a code definition.
- */
- revealPositionNearTop(position: IPosition, scrollType?: ScrollType): void;
- /**
- * Returns the primary selection of the editor.
- */
- getSelection(): Selection | null;
- /**
- * Returns all the selections of the editor.
- */
- getSelections(): Selection[] | null;
- /**
- * Set the primary selection of the editor. This will remove any secondary cursors.
- * @param selection The new selection
- * @param source Source of the call that caused the selection
- */
- setSelection(selection: IRange, source?: string): void;
- /**
- * Set the primary selection of the editor. This will remove any secondary cursors.
- * @param selection The new selection
- * @param source Source of the call that caused the selection
- */
- setSelection(selection: Range, source?: string): void;
- /**
- * Set the primary selection of the editor. This will remove any secondary cursors.
- * @param selection The new selection
- * @param source Source of the call that caused the selection
- */
- setSelection(selection: ISelection, source?: string): void;
- /**
- * Set the primary selection of the editor. This will remove any secondary cursors.
- * @param selection The new selection
- * @param source Source of the call that caused the selection
- */
- setSelection(selection: Selection, source?: string): void;
- /**
- * Set the selections for all the cursors of the editor.
- * Cursors will be removed or added, as necessary.
- * @param selections The new selection
- * @param source Source of the call that caused the selection
- */
- setSelections(selections: readonly ISelection[], source?: string): void;
- /**
- * Scroll vertically as necessary and reveal lines.
- */
- revealLines(startLineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal lines centered vertically.
- */
- revealLinesInCenter(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal lines centered vertically only if it lies outside the viewport.
- */
- revealLinesInCenterIfOutsideViewport(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically as necessary and reveal lines close to the top of the viewport,
- * optimized for viewing a code definition.
- */
- revealLinesNearTop(lineNumber: number, endLineNumber: number, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range.
- */
- revealRange(range: IRange, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range centered vertically.
- */
- revealRangeInCenter(range: IRange, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range at the top of the viewport.
- */
- revealRangeAtTop(range: IRange, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range centered vertically only if it lies outside the viewport.
- */
- revealRangeInCenterIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport,
- * optimized for viewing a code definition.
- */
- revealRangeNearTop(range: IRange, scrollType?: ScrollType): void;
- /**
- * Scroll vertically or horizontally as necessary and reveal a range close to the top of the viewport,
- * optimized for viewing a code definition. Only if it lies outside the viewport.
- */
- revealRangeNearTopIfOutsideViewport(range: IRange, scrollType?: ScrollType): void;
- /**
- * Directly trigger a handler or an editor action.
- * @param source The source of the call.
- * @param handlerId The id of the handler or the id of a contribution.
- * @param payload Extra data to be sent to the handler.
- */
- trigger(source: string | null | undefined, handlerId: string, payload: any): void;
- /**
- * Gets the current model attached to this editor.
- */
- getModel(): IEditorModel | null;
- /**
- * Sets the current model attached to this editor.
- * If the previous model was created by the editor via the value key in the options
- * literal object, it will be destroyed. Otherwise, if the previous model was set
- * via setModel, or the model key in the options literal object, the previous model
- * will not be destroyed.
- * It is safe to call setModel(null) to simply detach the current model from the editor.
- */
- setModel(model: IEditorModel | null): void;
- /**
- * Create a collection of decorations. All decorations added through this collection
- * will get the ownerId of the editor (meaning they will not show up in other editors).
- * These decorations will be automatically cleared when the editor's model changes.
- */
- createDecorationsCollection(decorations?: IModelDeltaDecoration[]): IEditorDecorationsCollection;
- }
- /**
- * A collection of decorations
- */
- export interface IEditorDecorationsCollection {
- /**
- * An event emitted when decorations change in the editor,
- * but the change is not caused by us setting or clearing the collection.
- */
- onDidChange: IEvent<IModelDecorationsChangedEvent>;
- /**
- * Get the decorations count.
- */
- length: number;
- /**
- * Get the range for a decoration.
- */
- getRange(index: number): Range | null;
- /**
- * Get all ranges for decorations.
- */
- getRanges(): Range[];
- /**
- * Determine if a decoration is in this collection.
- */
- has(decoration: IModelDecoration): boolean;
- /**
- * Replace all previous decorations with `newDecorations`.
- */
- set(newDecorations: readonly IModelDeltaDecoration[]): string[];
- /**
- * Remove all previous decorations.
- */
- clear(): void;
- }
- /**
- * An editor contribution that gets created every time a new editor gets created and gets disposed when the editor gets disposed.
- */
- export interface IEditorContribution {
- /**
- * Dispose this contribution.
- */
- dispose(): void;
- /**
- * Store view state.
- */
- saveViewState?(): any;
- /**
- * Restore view state.
- */
- restoreViewState?(state: any): void;
- }
- /**
- * The type of the `IEditor`.
- */
- export const EditorType: {
- ICodeEditor: string;
- IDiffEditor: string;
- };
- /**
- * An event describing that the current language associated with a model has changed.
- */
- export interface IModelLanguageChangedEvent {
- /**
- * Previous language
- */
- readonly oldLanguage: string;
- /**
- * New language
- */
- readonly newLanguage: string;
- /**
- * Source of the call that caused the event.
- */
- readonly source: string;
- }
- /**
- * An event describing that the language configuration associated with a model has changed.
- */
- export interface IModelLanguageConfigurationChangedEvent {
- }
- export interface IModelContentChange {
- /**
- * The range that got replaced.
- */
- readonly range: IRange;
- /**
- * The offset of the range that got replaced.
- */
- readonly rangeOffset: number;
- /**
- * The length of the range that got replaced.
- */
- readonly rangeLength: number;
- /**
- * The new text for the range.
- */
- readonly text: string;
- }
- /**
- * An event describing a change in the text of a model.
- */
- export interface IModelContentChangedEvent {
- readonly changes: IModelContentChange[];
- /**
- * The (new) end-of-line character.
- */
- readonly eol: string;
- /**
- * The new version id the model has transitioned to.
- */
- readonly versionId: number;
- /**
- * Flag that indicates that this event was generated while undoing.
- */
- readonly isUndoing: boolean;
- /**
- * Flag that indicates that this event was generated while redoing.
- */
- readonly isRedoing: boolean;
- /**
- * Flag that indicates that all decorations were lost with this edit.
- * The model has been reset to a new value.
- */
- readonly isFlush: boolean;
- /**
- * Flag that indicates that this event describes an eol change.
- */
- readonly isEolChange: boolean;
- }
- /**
- * An event describing that model decorations have changed.
- */
- export interface IModelDecorationsChangedEvent {
- readonly affectsMinimap: boolean;
- readonly affectsOverviewRuler: boolean;
- readonly affectsGlyphMargin: boolean;
- }
- export interface IModelOptionsChangedEvent {
- readonly tabSize: boolean;
- readonly indentSize: boolean;
- readonly insertSpaces: boolean;
- readonly trimAutoWhitespace: boolean;
- }
- /**
- * Describes the reason the cursor has changed its position.
- */
- export enum CursorChangeReason {
- /**
- * Unknown or not set.
- */
- NotSet = 0,
- /**
- * A `model.setValue()` was called.
- */
- ContentFlush = 1,
- /**
- * The `model` has been changed outside of this cursor and the cursor recovers its position from associated markers.
- */
- RecoverFromMarkers = 2,
- /**
- * There was an explicit user gesture.
- */
- Explicit = 3,
- /**
- * There was a Paste.
- */
- Paste = 4,
- /**
- * There was an Undo.
- */
- Undo = 5,
- /**
- * There was a Redo.
- */
- Redo = 6
- }
- /**
- * An event describing that the cursor position has changed.
- */
- export interface ICursorPositionChangedEvent {
- /**
- * Primary cursor's position.
- */
- readonly position: Position;
- /**
- * Secondary cursors' position.
- */
- readonly secondaryPositions: Position[];
- /**
- * Reason.
- */
- readonly reason: CursorChangeReason;
- /**
- * Source of the call that caused the event.
- */
- readonly source: string;
- }
- /**
- * An event describing that the cursor selection has changed.
- */
- export interface ICursorSelectionChangedEvent {
- /**
- * The primary selection.
- */
- readonly selection: Selection;
- /**
- * The secondary selections.
- */
- readonly secondarySelections: Selection[];
- /**
- * The model version id.
- */
- readonly modelVersionId: number;
- /**
- * The old selections.
- */
- readonly oldSelections: Selection[] | null;
- /**
- * The model version id the that `oldSelections` refer to.
- */
- readonly oldModelVersionId: number;
- /**
- * Source of the call that caused the event.
- */
- readonly source: string;
- /**
- * Reason.
- */
- readonly reason: CursorChangeReason;
- }
- export enum AccessibilitySupport {
- /**
- * This should be the browser case where it is not known if a screen reader is attached or no.
- */
- Unknown = 0,
- Disabled = 1,
- Enabled = 2
- }
- /**
- * Configuration options for auto closing quotes and brackets
- */
- export type EditorAutoClosingStrategy = 'always' | 'languageDefined' | 'beforeWhitespace' | 'never';
- /**
- * Configuration options for auto wrapping quotes and brackets
- */
- export type EditorAutoSurroundStrategy = 'languageDefined' | 'quotes' | 'brackets' | 'never';
- /**
- * Configuration options for typing over closing quotes or brackets
- */
- export type EditorAutoClosingEditStrategy = 'always' | 'auto' | 'never';
- /**
- * Configuration options for auto indentation in the editor
- */
- export enum EditorAutoIndentStrategy {
- None = 0,
- Keep = 1,
- Brackets = 2,
- Advanced = 3,
- Full = 4
- }
- /**
- * Configuration options for the editor.
- */
- export interface IEditorOptions {
- /**
- * This editor is used inside a diff editor.
- */
- inDiffEditor?: boolean;
- /**
- * The aria label for the editor's textarea (when it is focused).
- */
- ariaLabel?: string;
- /**
- * Control whether a screen reader announces inline suggestion content immediately.
- */
- screenReaderAnnounceInlineSuggestion?: boolean;
- /**
- * The `tabindex` property of the editor's textarea
- */
- tabIndex?: number;
- /**
- * Render vertical lines at the specified columns.
- * Defaults to empty array.
- */
- rulers?: (number | IRulerOption)[];
- /**
- * A string containing the word separators used when doing word navigation.
- * Defaults to `~!@#$%^&*()-=+[{]}\\|;:\'",.<>/?
- */
- wordSeparators?: string;
- /**
- * Enable Linux primary clipboard.
- * Defaults to true.
- */
- selectionClipboard?: boolean;
- /**
- * Control the rendering of line numbers.
- * If it is a function, it will be invoked when rendering a line number and the return value will be rendered.
- * Otherwise, if it is a truthy, line numbers will be rendered normally (equivalent of using an identity function).
- * Otherwise, line numbers will not be rendered.
- * Defaults to `on`.
- */
- lineNumbers?: LineNumbersType;
- /**
- * Controls the minimal number of visible leading and trailing lines surrounding the cursor.
- * Defaults to 0.
- */
- cursorSurroundingLines?: number;
- /**
- * Controls when `cursorSurroundingLines` should be enforced
- * Defaults to `default`, `cursorSurroundingLines` is not enforced when cursor position is changed
- * by mouse.
- */
- cursorSurroundingLinesStyle?: 'default' | 'all';
- /**
- * Render last line number when the file ends with a newline.
- * Defaults to 'on' for Windows and macOS and 'dimmed' for Linux.
- */
- renderFinalNewline?: 'on' | 'off' | 'dimmed';
- /**
- * Remove unusual line terminators like LINE SEPARATOR (LS), PARAGRAPH SEPARATOR (PS).
- * Defaults to 'prompt'.
- */
- unusualLineTerminators?: 'auto' | 'off' | 'prompt';
- /**
- * Should the corresponding line be selected when clicking on the line number?
- * Defaults to true.
- */
- selectOnLineNumbers?: boolean;
- /**
- * Control the width of line numbers, by reserving horizontal space for rendering at least an amount of digits.
- * Defaults to 5.
- */
- lineNumbersMinChars?: number;
- /**
- * Enable the rendering of the glyph margin.
- * Defaults to true in vscode and to false in monaco-editor.
- */
- glyphMargin?: boolean;
- /**
- * The width reserved for line decorations (in px).
- * Line decorations are placed between line numbers and the editor content.
- * You can pass in a string in the format floating point followed by "ch". e.g. 1.3ch.
- * Defaults to 10.
- */
- lineDecorationsWidth?: number | string;
- /**
- * When revealing the cursor, a virtual padding (px) is added to the cursor, turning it into a rectangle.
- * This virtual padding ensures that the cursor gets revealed before hitting the edge of the viewport.
- * Defaults to 30 (px).
- */
- revealHorizontalRightPadding?: number;
- /**
- * Render the editor selection with rounded borders.
- * Defaults to true.
- */
- roundedSelection?: boolean;
- /**
- * Class name to be added to the editor.
- */
- extraEditorClassName?: string;
- /**
- * Should the editor be read only. See also `domReadOnly`.
- * Defaults to false.
- */
- readOnly?: boolean;
- /**
- * The message to display when the editor is readonly.
- */
- readOnlyMessage?: IMarkdownString;
- /**
- * Should the textarea used for input use the DOM `readonly` attribute.
- * Defaults to false.
- */
- domReadOnly?: boolean;
- /**
- * Enable linked editing.
- * Defaults to false.
- */
- linkedEditing?: boolean;
- /**
- * deprecated, use linkedEditing instead
- */
- renameOnType?: boolean;
- /**
- * Should the editor render validation decorations.
- * Defaults to editable.
- */
- renderValidationDecorations?: 'editable' | 'on' | 'off';
- /**
- * Control the behavior and rendering of the scrollbars.
- */
- scrollbar?: IEditorScrollbarOptions;
- /**
- * Control the behavior of sticky scroll options
- */
- stickyScroll?: IEditorStickyScrollOptions;
- /**
- * Control the behavior and rendering of the minimap.
- */
- minimap?: IEditorMinimapOptions;
- /**
- * Control the behavior of the find widget.
- */
- find?: IEditorFindOptions;
- /**
- * Display overflow widgets as `fixed`.
- * Defaults to `false`.
- */
- fixedOverflowWidgets?: boolean;
- /**
- * The number of vertical lanes the overview ruler should render.
- * Defaults to 3.
- */
- overviewRulerLanes?: number;
- /**
- * Controls if a border should be drawn around the overview ruler.
- * Defaults to `true`.
- */
- overviewRulerBorder?: boolean;
- /**
- * Control the cursor animation style, possible values are 'blink', 'smooth', 'phase', 'expand' and 'solid'.
- * Defaults to 'blink'.
- */
- cursorBlinking?: 'blink' | 'smooth' | 'phase' | 'expand' | 'solid';
- /**
- * Zoom the font in the editor when using the mouse wheel in combination with holding Ctrl.
- * Defaults to false.
- */
- mouseWheelZoom?: boolean;
- /**
- * Control the mouse pointer style, either 'text' or 'default' or 'copy'
- * Defaults to 'text'
- */
- mouseStyle?: 'text' | 'default' | 'copy';
- /**
- * Enable smooth caret animation.
- * Defaults to 'off'.
- */
- cursorSmoothCaretAnimation?: 'off' | 'explicit' | 'on';
- /**
- * Control the cursor style, either 'block' or 'line'.
- * Defaults to 'line'.
- */
- cursorStyle?: 'line' | 'block' | 'underline' | 'line-thin' | 'block-outline' | 'underline-thin';
- /**
- * Control the width of the cursor when cursorStyle is set to 'line'
- */
- cursorWidth?: number;
- /**
- * Enable font ligatures.
- * Defaults to false.
- */
- fontLigatures?: boolean | string;
- /**
- * Enable font variations.
- * Defaults to false.
- */
- fontVariations?: boolean | string;
- /**
- * Controls whether to use default color decorations or not using the default document color provider
- */
- defaultColorDecorators?: boolean;
- /**
- * Disable the use of `transform: translate3d(0px, 0px, 0px)` for the editor margin and lines layers.
- * The usage of `transform: translate3d(0px, 0px, 0px)` acts as a hint for browsers to create an extra layer.
- * Defaults to false.
- */
- disableLayerHinting?: boolean;
- /**
- * Disable the optimizations for monospace fonts.
- * Defaults to false.
- */
- disableMonospaceOptimizations?: boolean;
- /**
- * Should the cursor be hidden in the overview ruler.
- * Defaults to false.
- */
- hideCursorInOverviewRuler?: boolean;
- /**
- * Enable that scrolling can go one screen size after the last line.
- * Defaults to true.
- */
- scrollBeyondLastLine?: boolean;
- /**
- * Enable that scrolling can go beyond the last column by a number of columns.
- * Defaults to 5.
- */
- scrollBeyondLastColumn?: number;
- /**
- * Enable that the editor animates scrolling to a position.
- * Defaults to false.
- */
- smoothScrolling?: boolean;
- /**
- * Enable that the editor will install a ResizeObserver to check if its container dom node size has changed.
- * Defaults to false.
- */
- automaticLayout?: boolean;
- /**
- * Control the wrapping of the editor.
- * When `wordWrap` = "off", the lines will never wrap.
- * When `wordWrap` = "on", the lines will wrap at the viewport width.
- * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
- * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
- * Defaults to "off".
- */
- wordWrap?: 'off' | 'on' | 'wordWrapColumn' | 'bounded';
- /**
- * Override the `wordWrap` setting.
- */
- wordWrapOverride1?: 'off' | 'on' | 'inherit';
- /**
- * Override the `wordWrapOverride1` setting.
- */
- wordWrapOverride2?: 'off' | 'on' | 'inherit';
- /**
- * Control the wrapping of the editor.
- * When `wordWrap` = "off", the lines will never wrap.
- * When `wordWrap` = "on", the lines will wrap at the viewport width.
- * When `wordWrap` = "wordWrapColumn", the lines will wrap at `wordWrapColumn`.
- * When `wordWrap` = "bounded", the lines will wrap at min(viewport width, wordWrapColumn).
- * Defaults to 80.
- */
- wordWrapColumn?: number;
- /**
- * Control indentation of wrapped lines. Can be: 'none', 'same', 'indent' or 'deepIndent'.
- * Defaults to 'same' in vscode and to 'none' in monaco-editor.
- */
- wrappingIndent?: 'none' | 'same' | 'indent' | 'deepIndent';
- /**
- * Controls the wrapping strategy to use.
- * Defaults to 'simple'.
- */
- wrappingStrategy?: 'simple' | 'advanced';
- /**
- * Configure word wrapping characters. A break will be introduced before these characters.
- */
- wordWrapBreakBeforeCharacters?: string;
- /**
- * Configure word wrapping characters. A break will be introduced after these characters.
- */
- wordWrapBreakAfterCharacters?: string;
- /**
- * Sets whether line breaks appear wherever the text would otherwise overflow its content box.
- * When wordBreak = 'normal', Use the default line break rule.
- * When wordBreak = 'keepAll', Word breaks should not be used for Chinese/Japanese/Korean (CJK) text. Non-CJK text behavior is the same as for normal.
- */
- wordBreak?: 'normal' | 'keepAll';
- /**
- * Performance guard: Stop rendering a line after x characters.
- * Defaults to 10000.
- * Use -1 to never stop rendering
- */
- stopRenderingLineAfter?: number;
- /**
- * Configure the editor's hover.
- */
- hover?: IEditorHoverOptions;
- /**
- * Enable detecting links and making them clickable.
- * Defaults to true.
- */
- links?: boolean;
- /**
- * Enable inline color decorators and color picker rendering.
- */
- colorDecorators?: boolean;
- /**
- * Controls what is the condition to spawn a color picker from a color dectorator
- */
- colorDecoratorsActivatedOn?: 'clickAndHover' | 'click' | 'hover';
- /**
- * Controls the max number of color decorators that can be rendered in an editor at once.
- */
- colorDecoratorsLimit?: number;
- /**
- * Control the behaviour of comments in the editor.
- */
- comments?: IEditorCommentsOptions;
- /**
- * Enable custom contextmenu.
- * Defaults to true.
- */
- contextmenu?: boolean;
- /**
- * A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.
- * Defaults to 1.
- */
- mouseWheelScrollSensitivity?: number;
- /**
- * FastScrolling mulitplier speed when pressing `Alt`
- * Defaults to 5.
- */
- fastScrollSensitivity?: number;
- /**
- * Enable that the editor scrolls only the predominant axis. Prevents horizontal drift when scrolling vertically on a trackpad.
- * Defaults to true.
- */
- scrollPredominantAxis?: boolean;
- /**
- * Enable that the selection with the mouse and keys is doing column selection.
- * Defaults to false.
- */
- columnSelection?: boolean;
- /**
- * The modifier to be used to add multiple cursors with the mouse.
- * Defaults to 'alt'
- */
- multiCursorModifier?: 'ctrlCmd' | 'alt';
- /**
- * Merge overlapping selections.
- * Defaults to true
- */
- multiCursorMergeOverlapping?: boolean;
- /**
- * Configure the behaviour when pasting a text with the line count equal to the cursor count.
- * Defaults to 'spread'.
- */
- multiCursorPaste?: 'spread' | 'full';
- /**
- * Controls the max number of text cursors that can be in an active editor at once.
- */
- multiCursorLimit?: number;
- /**
- * Configure the editor's accessibility support.
- * Defaults to 'auto'. It is best to leave this to 'auto'.
- */
- accessibilitySupport?: 'auto' | 'off' | 'on';
- /**
- * Controls the number of lines in the editor that can be read out by a screen reader
- */
- accessibilityPageSize?: number;
- /**
- * Suggest options.
- */
- suggest?: ISuggestOptions;
- inlineSuggest?: IInlineSuggestOptions;
- /**
- * Smart select options.
- */
- smartSelect?: ISmartSelectOptions;
- /**
- *
- */
- gotoLocation?: IGotoLocationOptions;
- /**
- * Enable quick suggestions (shadow suggestions)
- * Defaults to true.
- */
- quickSuggestions?: boolean | IQuickSuggestionsOptions;
- /**
- * Quick suggestions show delay (in ms)
- * Defaults to 10 (ms)
- */
- quickSuggestionsDelay?: number;
- /**
- * Controls the spacing around the editor.
- */
- padding?: IEditorPaddingOptions;
- /**
- * Parameter hint options.
- */
- parameterHints?: IEditorParameterHintOptions;
- /**
- * Options for auto closing brackets.
- * Defaults to language defined behavior.
- */
- autoClosingBrackets?: EditorAutoClosingStrategy;
- /**
- * Options for auto closing quotes.
- * Defaults to language defined behavior.
- */
- autoClosingQuotes?: EditorAutoClosingStrategy;
- /**
- * Options for pressing backspace near quotes or bracket pairs.
- */
- autoClosingDelete?: EditorAutoClosingEditStrategy;
- /**
- * Options for typing over closing quotes or brackets.
- */
- autoClosingOvertype?: EditorAutoClosingEditStrategy;
- /**
- * Options for auto surrounding.
- * Defaults to always allowing auto surrounding.
- */
- autoSurround?: EditorAutoSurroundStrategy;
- /**
- * Controls whether the editor should automatically adjust the indentation when users type, paste, move or indent lines.
- * Defaults to advanced.
- */
- autoIndent?: 'none' | 'keep' | 'brackets' | 'advanced' | 'full';
- /**
- * Emulate selection behaviour of tab characters when using spaces for indentation.
- * This means selection will stick to tab stops.
- */
- stickyTabStops?: boolean;
- /**
- * Enable format on type.
- * Defaults to false.
- */
- formatOnType?: boolean;
- /**
- * Enable format on paste.
- * Defaults to false.
- */
- formatOnPaste?: boolean;
- /**
- * Controls if the editor should allow to move selections via drag and drop.
- * Defaults to false.
- */
- dragAndDrop?: boolean;
- /**
- * Enable the suggestion box to pop-up on trigger characters.
- * Defaults to true.
- */
- suggestOnTriggerCharacters?: boolean;
- /**
- * Accept suggestions on ENTER.
- * Defaults to 'on'.
- */
- acceptSuggestionOnEnter?: 'on' | 'smart' | 'off';
- /**
- * Accept suggestions on provider defined characters.
- * Defaults to true.
- */
- acceptSuggestionOnCommitCharacter?: boolean;
- /**
- * Enable snippet suggestions. Default to 'true'.
- */
- snippetSuggestions?: 'top' | 'bottom' | 'inline' | 'none';
- /**
- * Copying without a selection copies the current line.
- */
- emptySelectionClipboard?: boolean;
- /**
- * Syntax highlighting is copied.
- */
- copyWithSyntaxHighlighting?: boolean;
- /**
- * The history mode for suggestions.
- */
- suggestSelection?: 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix';
- /**
- * The font size for the suggest widget.
- * Defaults to the editor font size.
- */
- suggestFontSize?: number;
- /**
- * The line height for the suggest widget.
- * Defaults to the editor line height.
- */
- suggestLineHeight?: number;
- /**
- * Enable tab completion.
- */
- tabCompletion?: 'on' | 'off' | 'onlySnippets';
- /**
- * Enable selection highlight.
- * Defaults to true.
- */
- selectionHighlight?: boolean;
- /**
- * Enable semantic occurrences highlight.
- * Defaults to true.
- */
- occurrencesHighlight?: boolean;
- /**
- * Show code lens
- * Defaults to true.
- */
- codeLens?: boolean;
- /**
- * Code lens font family. Defaults to editor font family.
- */
- codeLensFontFamily?: string;
- /**
- * Code lens font size. Default to 90% of the editor font size
- */
- codeLensFontSize?: number;
- /**
- * Control the behavior and rendering of the code action lightbulb.
- */
- lightbulb?: IEditorLightbulbOptions;
- /**
- * Timeout for running code actions on save.
- */
- codeActionsOnSaveTimeout?: number;
- /**
- * Enable code folding.
- * Defaults to true.
- */
- folding?: boolean;
- /**
- * Selects the folding strategy. 'auto' uses the strategies contributed for the current document, 'indentation' uses the indentation based folding strategy.
- * Defaults to 'auto'.
- */
- foldingStrategy?: 'auto' | 'indentation';
- /**
- * Enable highlight for folded regions.
- * Defaults to true.
- */
- foldingHighlight?: boolean;
- /**
- * Auto fold imports folding regions.
- * Defaults to true.
- */
- foldingImportsByDefault?: boolean;
- /**
- * Maximum number of foldable regions.
- * Defaults to 5000.
- */
- foldingMaximumRegions?: number;
- /**
- * Controls whether the fold actions in the gutter stay always visible or hide unless the mouse is over the gutter.
- * Defaults to 'mouseover'.
- */
- showFoldingControls?: 'always' | 'never' | 'mouseover';
- /**
- * Controls whether clicking on the empty content after a folded line will unfold the line.
- * Defaults to false.
- */
- unfoldOnClickAfterEndOfLine?: boolean;
- /**
- * Enable highlighting of matching brackets.
- * Defaults to 'always'.
- */
- matchBrackets?: 'never' | 'near' | 'always';
- /**
- * Enable experimental whitespace rendering.
- * Defaults to 'svg'.
- */
- experimentalWhitespaceRendering?: 'svg' | 'font' | 'off';
- /**
- * Enable rendering of whitespace.
- * Defaults to 'selection'.
- */
- renderWhitespace?: 'none' | 'boundary' | 'selection' | 'trailing' | 'all';
- /**
- * Enable rendering of control characters.
- * Defaults to true.
- */
- renderControlCharacters?: boolean;
- /**
- * Enable rendering of current line highlight.
- * Defaults to all.
- */
- renderLineHighlight?: 'none' | 'gutter' | 'line' | 'all';
- /**
- * Control if the current line highlight should be rendered only the editor is focused.
- * Defaults to false.
- */
- renderLineHighlightOnlyWhenFocus?: boolean;
- /**
- * Inserting and deleting whitespace follows tab stops.
- */
- useTabStops?: boolean;
- /**
- * The font family
- */
- fontFamily?: string;
- /**
- * The font weight
- */
- fontWeight?: string;
- /**
- * The font size
- */
- fontSize?: number;
- /**
- * The line height
- */
- lineHeight?: number;
- /**
- * The letter spacing
- */
- letterSpacing?: number;
- /**
- * Controls fading out of unused variables.
- */
- showUnused?: boolean;
- /**
- * Controls whether to focus the inline editor in the peek widget by default.
- * Defaults to false.
- */
- peekWidgetDefaultFocus?: 'tree' | 'editor';
- /**
- * Controls whether the definition link opens element in the peek widget.
- * Defaults to false.
- */
- definitionLinkOpensInPeek?: boolean;
- /**
- * Controls strikethrough deprecated variables.
- */
- showDeprecated?: boolean;
- /**
- * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning
- */
- matchOnWordStartOnly?: boolean;
- /**
- * Control the behavior and rendering of the inline hints.
- */
- inlayHints?: IEditorInlayHintsOptions;
- /**
- * Control if the editor should use shadow DOM.
- */
- useShadowDOM?: boolean;
- /**
- * Controls the behavior of editor guides.
- */
- guides?: IGuidesOptions;
- /**
- * Controls the behavior of the unicode highlight feature
- * (by default, ambiguous and invisible characters are highlighted).
- */
- unicodeHighlight?: IUnicodeHighlightOptions;
- /**
- * Configures bracket pair colorization (disabled by default).
- */
- bracketPairColorization?: IBracketPairColorizationOptions;
- /**
- * Controls dropping into the editor from an external source.
- *
- * When enabled, this shows a preview of the drop location and triggers an `onDropIntoEditor` event.
- */
- dropIntoEditor?: IDropIntoEditorOptions;
- /**
- * Controls support for changing how content is pasted into the editor.
- */
- pasteAs?: IPasteAsOptions;
- /**
- * Controls whether the editor receives tabs or defers them to the workbench for navigation.
- */
- tabFocusMode?: boolean;
- }
- export interface IDiffEditorBaseOptions {
- /**
- * Allow the user to resize the diff editor split view.
- * Defaults to true.
- */
- enableSplitViewResizing?: boolean;
- /**
- * The default ratio when rendering side-by-side editors.
- * Must be a number between 0 and 1, min sizes apply.
- * Defaults to 0.5
- */
- splitViewDefaultRatio?: number;
- /**
- * Render the differences in two side-by-side editors.
- * Defaults to true.
- */
- renderSideBySide?: boolean;
- /**
- * Timeout in milliseconds after which diff computation is cancelled.
- * Defaults to 5000.
- */
- maxComputationTime?: number;
- /**
- * Maximum supported file size in MB.
- * Defaults to 50.
- */
- maxFileSize?: number;
- /**
- * Compute the diff by ignoring leading/trailing whitespace
- * Defaults to true.
- */
- ignoreTrimWhitespace?: boolean;
- /**
- * Render +/- indicators for added/deleted changes.
- * Defaults to true.
- */
- renderIndicators?: boolean;
- /**
- * Shows icons in the glyph margin to revert changes.
- * Default to true.
- */
- renderMarginRevertIcon?: boolean;
- /**
- * Original model should be editable?
- * Defaults to false.
- */
- originalEditable?: boolean;
- /**
- * Should the diff editor enable code lens?
- * Defaults to false.
- */
- diffCodeLens?: boolean;
- /**
- * Is the diff editor should render overview ruler
- * Defaults to true
- */
- renderOverviewRuler?: boolean;
- /**
- * Control the wrapping of the diff editor.
- */
- diffWordWrap?: 'off' | 'on' | 'inherit';
- /**
- * Diff Algorithm
- */
- diffAlgorithm?: 'legacy' | 'advanced' | IDocumentDiffProvider;
- /**
- * Whether the diff editor aria label should be verbose.
- */
- accessibilityVerbose?: boolean;
- experimental?: {
- /**
- * Defaults to false.
- */
- collapseUnchangedRegions?: boolean;
- /**
- * Defaults to false.
- */
- showMoves?: boolean;
- showEmptyDecorations?: boolean;
- };
- /**
- * Is the diff editor inside another editor
- * Defaults to false
- */
- isInEmbeddedEditor?: boolean;
- }
- /**
- * Configuration options for the diff editor.
- */
- export interface IDiffEditorOptions extends IEditorOptions, IDiffEditorBaseOptions {
- }
- /**
- * An event describing that the configuration of the editor has changed.
- */
- export class ConfigurationChangedEvent {
- hasChanged(id: EditorOption): boolean;
- }
- /**
- * All computed editor options.
- */
- export interface IComputedEditorOptions {
- get<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
- }
- export interface IEditorOption<K extends EditorOption, V> {
- readonly id: K;
- readonly name: string;
- defaultValue: V;
- /**
- * Might modify `value`.
- */
- applyUpdate(value: V | undefined, update: V): ApplyUpdateResult<V>;
- }
- export class ApplyUpdateResult<T> {
- readonly newValue: T;
- readonly didChange: boolean;
- constructor(newValue: T, didChange: boolean);
- }
- /**
- * Configuration options for editor comments
- */
- export interface IEditorCommentsOptions {
- /**
- * Insert a space after the line comment token and inside the block comments tokens.
- * Defaults to true.
- */
- insertSpace?: boolean;
- /**
- * Ignore empty lines when inserting line comments.
- * Defaults to true.
- */
- ignoreEmptyLines?: boolean;
- }
- /**
- * The kind of animation in which the editor's cursor should be rendered.
- */
- export enum TextEditorCursorBlinkingStyle {
- /**
- * Hidden
- */
- Hidden = 0,
- /**
- * Blinking
- */
- Blink = 1,
- /**
- * Blinking with smooth fading
- */
- Smooth = 2,
- /**
- * Blinking with prolonged filled state and smooth fading
- */
- Phase = 3,
- /**
- * Expand collapse animation on the y axis
- */
- Expand = 4,
- /**
- * No-Blinking
- */
- Solid = 5
- }
- /**
- * The style in which the editor's cursor should be rendered.
- */
- export enum TextEditorCursorStyle {
- /**
- * As a vertical line (sitting between two characters).
- */
- Line = 1,
- /**
- * As a block (sitting on top of a character).
- */
- Block = 2,
- /**
- * As a horizontal line (sitting under a character).
- */
- Underline = 3,
- /**
- * As a thin vertical line (sitting between two characters).
- */
- LineThin = 4,
- /**
- * As an outlined block (sitting on top of a character).
- */
- BlockOutline = 5,
- /**
- * As a thin horizontal line (sitting under a character).
- */
- UnderlineThin = 6
- }
- /**
- * Configuration options for editor find widget
- */
- export interface IEditorFindOptions {
- /**
- * Controls whether the cursor should move to find matches while typing.
- */
- cursorMoveOnType?: boolean;
- /**
- * Controls if we seed search string in the Find Widget with editor selection.
- */
- seedSearchStringFromSelection?: 'never' | 'always' | 'selection';
- /**
- * Controls if Find in Selection flag is turned on in the editor.
- */
- autoFindInSelection?: 'never' | 'always' | 'multiline';
- addExtraSpaceOnTop?: boolean;
- /**
- * Controls whether the search result and diff result automatically restarts from the beginning (or the end) when no further matches can be found
- */
- loop?: boolean;
- }
- export type GoToLocationValues = 'peek' | 'gotoAndPeek' | 'goto';
- /**
- * Configuration options for go to location
- */
- export interface IGotoLocationOptions {
- multiple?: GoToLocationValues;
- multipleDefinitions?: GoToLocationValues;
- multipleTypeDefinitions?: GoToLocationValues;
- multipleDeclarations?: GoToLocationValues;
- multipleImplementations?: GoToLocationValues;
- multipleReferences?: GoToLocationValues;
- alternativeDefinitionCommand?: string;
- alternativeTypeDefinitionCommand?: string;
- alternativeDeclarationCommand?: string;
- alternativeImplementationCommand?: string;
- alternativeReferenceCommand?: string;
- }
- /**
- * Configuration options for editor hover
- */
- export interface IEditorHoverOptions {
- /**
- * Enable the hover.
- * Defaults to true.
- */
- enabled?: boolean;
- /**
- * Delay for showing the hover.
- * Defaults to 300.
- */
- delay?: number;
- /**
- * Is the hover sticky such that it can be clicked and its contents selected?
- * Defaults to true.
- */
- sticky?: boolean;
- /**
- * Should the hover be shown above the line if possible?
- * Defaults to false.
- */
- above?: boolean;
- }
- /**
- * A description for the overview ruler position.
- */
- export interface OverviewRulerPosition {
- /**
- * Width of the overview ruler
- */
- readonly width: number;
- /**
- * Height of the overview ruler
- */
- readonly height: number;
- /**
- * Top position for the overview ruler
- */
- readonly top: number;
- /**
- * Right position for the overview ruler
- */
- readonly right: number;
- }
- export enum RenderMinimap {
- None = 0,
- Text = 1,
- Blocks = 2
- }
- /**
- * The internal layout details of the editor.
- */
- export interface EditorLayoutInfo {
- /**
- * Full editor width.
- */
- readonly width: number;
- /**
- * Full editor height.
- */
- readonly height: number;
- /**
- * Left position for the glyph margin.
- */
- readonly glyphMarginLeft: number;
- /**
- * The width of the glyph margin.
- */
- readonly glyphMarginWidth: number;
- /**
- * The number of decoration lanes to render in the glyph margin.
- */
- readonly glyphMarginDecorationLaneCount: number;
- /**
- * Left position for the line numbers.
- */
- readonly lineNumbersLeft: number;
- /**
- * The width of the line numbers.
- */
- readonly lineNumbersWidth: number;
- /**
- * Left position for the line decorations.
- */
- readonly decorationsLeft: number;
- /**
- * The width of the line decorations.
- */
- readonly decorationsWidth: number;
- /**
- * Left position for the content (actual text)
- */
- readonly contentLeft: number;
- /**
- * The width of the content (actual text)
- */
- readonly contentWidth: number;
- /**
- * Layout information for the minimap
- */
- readonly minimap: EditorMinimapLayoutInfo;
- /**
- * The number of columns (of typical characters) fitting on a viewport line.
- */
- readonly viewportColumn: number;
- readonly isWordWrapMinified: boolean;
- readonly isViewportWrapping: boolean;
- readonly wrappingColumn: number;
- /**
- * The width of the vertical scrollbar.
- */
- readonly verticalScrollbarWidth: number;
- /**
- * The height of the horizontal scrollbar.
- */
- readonly horizontalScrollbarHeight: number;
- /**
- * The position of the overview ruler.
- */
- readonly overviewRuler: OverviewRulerPosition;
- }
- /**
- * The internal layout details of the editor.
- */
- export interface EditorMinimapLayoutInfo {
- readonly renderMinimap: RenderMinimap;
- readonly minimapLeft: number;
- readonly minimapWidth: number;
- readonly minimapHeightIsEditorHeight: boolean;
- readonly minimapIsSampling: boolean;
- readonly minimapScale: number;
- readonly minimapLineHeight: number;
- readonly minimapCanvasInnerWidth: number;
- readonly minimapCanvasInnerHeight: number;
- readonly minimapCanvasOuterWidth: number;
- readonly minimapCanvasOuterHeight: number;
- }
- /**
- * Configuration options for editor lightbulb
- */
- export interface IEditorLightbulbOptions {
- /**
- * Enable the lightbulb code action.
- * Defaults to true.
- */
- enabled?: boolean;
- }
- export interface IEditorStickyScrollOptions {
- /**
- * Enable the sticky scroll
- */
- enabled?: boolean;
- /**
- * Maximum number of sticky lines to show
- */
- maxLineCount?: number;
- /**
- * Model to choose for sticky scroll by default
- */
- defaultModel?: 'outlineModel' | 'foldingProviderModel' | 'indentationModel';
- }
- /**
- * Configuration options for editor inlayHints
- */
- export interface IEditorInlayHintsOptions {
- /**
- * Enable the inline hints.
- * Defaults to true.
- */
- enabled?: 'on' | 'off' | 'offUnlessPressed' | 'onUnlessPressed';
- /**
- * Font size of inline hints.
- * Default to 90% of the editor font size.
- */
- fontSize?: number;
- /**
- * Font family of inline hints.
- * Defaults to editor font family.
- */
- fontFamily?: string;
- /**
- * Enables the padding around the inlay hint.
- * Defaults to false.
- */
- padding?: boolean;
- }
- /**
- * Configuration options for editor minimap
- */
- export interface IEditorMinimapOptions {
- /**
- * Enable the rendering of the minimap.
- * Defaults to true.
- */
- enabled?: boolean;
- /**
- * Control the rendering of minimap.
- */
- autohide?: boolean;
- /**
- * Control the side of the minimap in editor.
- * Defaults to 'right'.
- */
- side?: 'right' | 'left';
- /**
- * Control the minimap rendering mode.
- * Defaults to 'actual'.
- */
- size?: 'proportional' | 'fill' | 'fit';
- /**
- * Control the rendering of the minimap slider.
- * Defaults to 'mouseover'.
- */
- showSlider?: 'always' | 'mouseover';
- /**
- * Render the actual text on a line (as opposed to color blocks).
- * Defaults to true.
- */
- renderCharacters?: boolean;
- /**
- * Limit the width of the minimap to render at most a certain number of columns.
- * Defaults to 120.
- */
- maxColumn?: number;
- /**
- * Relative size of the font in the minimap. Defaults to 1.
- */
- scale?: number;
- }
- /**
- * Configuration options for editor padding
- */
- export interface IEditorPaddingOptions {
- /**
- * Spacing between top edge of editor and first line.
- */
- top?: number;
- /**
- * Spacing between bottom edge of editor and last line.
- */
- bottom?: number;
- }
- /**
- * Configuration options for parameter hints
- */
- export interface IEditorParameterHintOptions {
- /**
- * Enable parameter hints.
- * Defaults to true.
- */
- enabled?: boolean;
- /**
- * Enable cycling of parameter hints.
- * Defaults to false.
- */
- cycle?: boolean;
- }
- export type QuickSuggestionsValue = 'on' | 'inline' | 'off';
- /**
- * Configuration options for quick suggestions
- */
- export interface IQuickSuggestionsOptions {
- other?: boolean | QuickSuggestionsValue;
- comments?: boolean | QuickSuggestionsValue;
- strings?: boolean | QuickSuggestionsValue;
- }
- export interface InternalQuickSuggestionsOptions {
- readonly other: QuickSuggestionsValue;
- readonly comments: QuickSuggestionsValue;
- readonly strings: QuickSuggestionsValue;
- }
- export type LineNumbersType = 'on' | 'off' | 'relative' | 'interval' | ((lineNumber: number) => string);
- export enum RenderLineNumbersType {
- Off = 0,
- On = 1,
- Relative = 2,
- Interval = 3,
- Custom = 4
- }
- export interface InternalEditorRenderLineNumbersOptions {
- readonly renderType: RenderLineNumbersType;
- readonly renderFn: ((lineNumber: number) => string) | null;
- }
- export interface IRulerOption {
- readonly column: number;
- readonly color: string | null;
- }
- /**
- * Configuration options for editor scrollbars
- */
- export interface IEditorScrollbarOptions {
- /**
- * The size of arrows (if displayed).
- * Defaults to 11.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- arrowSize?: number;
- /**
- * Render vertical scrollbar.
- * Defaults to 'auto'.
- */
- vertical?: 'auto' | 'visible' | 'hidden';
- /**
- * Render horizontal scrollbar.
- * Defaults to 'auto'.
- */
- horizontal?: 'auto' | 'visible' | 'hidden';
- /**
- * Cast horizontal and vertical shadows when the content is scrolled.
- * Defaults to true.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- useShadows?: boolean;
- /**
- * Render arrows at the top and bottom of the vertical scrollbar.
- * Defaults to false.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- verticalHasArrows?: boolean;
- /**
- * Render arrows at the left and right of the horizontal scrollbar.
- * Defaults to false.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- horizontalHasArrows?: boolean;
- /**
- * Listen to mouse wheel events and react to them by scrolling.
- * Defaults to true.
- */
- handleMouseWheel?: boolean;
- /**
- * Always consume mouse wheel events (always call preventDefault() and stopPropagation() on the browser events).
- * Defaults to true.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- alwaysConsumeMouseWheel?: boolean;
- /**
- * Height in pixels for the horizontal scrollbar.
- * Defaults to 10 (px).
- */
- horizontalScrollbarSize?: number;
- /**
- * Width in pixels for the vertical scrollbar.
- * Defaults to 10 (px).
- */
- verticalScrollbarSize?: number;
- /**
- * Width in pixels for the vertical slider.
- * Defaults to `verticalScrollbarSize`.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- verticalSliderSize?: number;
- /**
- * Height in pixels for the horizontal slider.
- * Defaults to `horizontalScrollbarSize`.
- * **NOTE**: This option cannot be updated using `updateOptions()`
- */
- horizontalSliderSize?: number;
- /**
- * Scroll gutter clicks move by page vs jump to position.
- * Defaults to false.
- */
- scrollByPage?: boolean;
- }
- export interface InternalEditorScrollbarOptions {
- readonly arrowSize: number;
- readonly vertical: ScrollbarVisibility;
- readonly horizontal: ScrollbarVisibility;
- readonly useShadows: boolean;
- readonly verticalHasArrows: boolean;
- readonly horizontalHasArrows: boolean;
- readonly handleMouseWheel: boolean;
- readonly alwaysConsumeMouseWheel: boolean;
- readonly horizontalScrollbarSize: number;
- readonly horizontalSliderSize: number;
- readonly verticalScrollbarSize: number;
- readonly verticalSliderSize: number;
- readonly scrollByPage: boolean;
- }
- export type InUntrustedWorkspace = 'inUntrustedWorkspace';
- /**
- * Configuration options for unicode highlighting.
- */
- export interface IUnicodeHighlightOptions {
- /**
- * Controls whether all non-basic ASCII characters are highlighted. Only characters between U+0020 and U+007E, tab, line-feed and carriage-return are considered basic ASCII.
- */
- nonBasicASCII?: boolean | InUntrustedWorkspace;
- /**
- * Controls whether characters that just reserve space or have no width at all are highlighted.
- */
- invisibleCharacters?: boolean;
- /**
- * Controls whether characters are highlighted that can be confused with basic ASCII characters, except those that are common in the current user locale.
- */
- ambiguousCharacters?: boolean;
- /**
- * Controls whether characters in comments should also be subject to unicode highlighting.
- */
- includeComments?: boolean | InUntrustedWorkspace;
- /**
- * Controls whether characters in strings should also be subject to unicode highlighting.
- */
- includeStrings?: boolean | InUntrustedWorkspace;
- /**
- * Defines allowed characters that are not being highlighted.
- */
- allowedCharacters?: Record<string, true>;
- /**
- * Unicode characters that are common in allowed locales are not being highlighted.
- */
- allowedLocales?: Record<string | '_os' | '_vscode', true>;
- }
- export interface IInlineSuggestOptions {
- /**
- * Enable or disable the rendering of automatic inline completions.
- */
- enabled?: boolean;
- /**
- * Configures the mode.
- * Use `prefix` to only show ghost text if the text to replace is a prefix of the suggestion text.
- * Use `subword` to only show ghost text if the replace text is a subword of the suggestion text.
- * Use `subwordSmart` to only show ghost text if the replace text is a subword of the suggestion text, but the subword must start after the cursor position.
- * Defaults to `prefix`.
- */
- mode?: 'prefix' | 'subword' | 'subwordSmart';
- showToolbar?: 'always' | 'onHover';
- suppressSuggestions?: boolean;
- /**
- * Does not clear active inline suggestions when the editor loses focus.
- */
- keepOnBlur?: boolean;
- }
- export interface IBracketPairColorizationOptions {
- /**
- * Enable or disable bracket pair colorization.
- */
- enabled?: boolean;
- /**
- * Use independent color pool per bracket type.
- */
- independentColorPoolPerBracketType?: boolean;
- }
- export interface IGuidesOptions {
- /**
- * Enable rendering of bracket pair guides.
- * Defaults to false.
- */
- bracketPairs?: boolean | 'active';
- /**
- * Enable rendering of vertical bracket pair guides.
- * Defaults to 'active'.
- */
- bracketPairsHorizontal?: boolean | 'active';
- /**
- * Enable highlighting of the active bracket pair.
- * Defaults to true.
- */
- highlightActiveBracketPair?: boolean;
- /**
- * Enable rendering of indent guides.
- * Defaults to true.
- */
- indentation?: boolean;
- /**
- * Enable highlighting of the active indent guide.
- * Defaults to true.
- */
- highlightActiveIndentation?: boolean | 'always';
- }
- /**
- * Configuration options for editor suggest widget
- */
- export interface ISuggestOptions {
- /**
- * Overwrite word ends on accept. Default to false.
- */
- insertMode?: 'insert' | 'replace';
- /**
- * Enable graceful matching. Defaults to true.
- */
- filterGraceful?: boolean;
- /**
- * Prevent quick suggestions when a snippet is active. Defaults to true.
- */
- snippetsPreventQuickSuggestions?: boolean;
- /**
- * Favors words that appear close to the cursor.
- */
- localityBonus?: boolean;
- /**
- * Enable using global storage for remembering suggestions.
- */
- shareSuggestSelections?: boolean;
- /**
- * Select suggestions when triggered via quick suggest or trigger characters
- */
- selectionMode?: 'always' | 'never' | 'whenTriggerCharacter' | 'whenQuickSuggestion';
- /**
- * Enable or disable icons in suggestions. Defaults to true.
- */
- showIcons?: boolean;
- /**
- * Enable or disable the suggest status bar.
- */
- showStatusBar?: boolean;
- /**
- * Enable or disable the rendering of the suggestion preview.
- */
- preview?: boolean;
- /**
- * Configures the mode of the preview.
- */
- previewMode?: 'prefix' | 'subword' | 'subwordSmart';
- /**
- * Show details inline with the label. Defaults to true.
- */
- showInlineDetails?: boolean;
- /**
- * Show method-suggestions.
- */
- showMethods?: boolean;
- /**
- * Show function-suggestions.
- */
- showFunctions?: boolean;
- /**
- * Show constructor-suggestions.
- */
- showConstructors?: boolean;
- /**
- * Show deprecated-suggestions.
- */
- showDeprecated?: boolean;
- /**
- * Controls whether suggestions allow matches in the middle of the word instead of only at the beginning
- */
- matchOnWordStartOnly?: boolean;
- /**
- * Show field-suggestions.
- */
- showFields?: boolean;
- /**
- * Show variable-suggestions.
- */
- showVariables?: boolean;
- /**
- * Show class-suggestions.
- */
- showClasses?: boolean;
- /**
- * Show struct-suggestions.
- */
- showStructs?: boolean;
- /**
- * Show interface-suggestions.
- */
- showInterfaces?: boolean;
- /**
- * Show module-suggestions.
- */
- showModules?: boolean;
- /**
- * Show property-suggestions.
- */
- showProperties?: boolean;
- /**
- * Show event-suggestions.
- */
- showEvents?: boolean;
- /**
- * Show operator-suggestions.
- */
- showOperators?: boolean;
- /**
- * Show unit-suggestions.
- */
- showUnits?: boolean;
- /**
- * Show value-suggestions.
- */
- showValues?: boolean;
- /**
- * Show constant-suggestions.
- */
- showConstants?: boolean;
- /**
- * Show enum-suggestions.
- */
- showEnums?: boolean;
- /**
- * Show enumMember-suggestions.
- */
- showEnumMembers?: boolean;
- /**
- * Show keyword-suggestions.
- */
- showKeywords?: boolean;
- /**
- * Show text-suggestions.
- */
- showWords?: boolean;
- /**
- * Show color-suggestions.
- */
- showColors?: boolean;
- /**
- * Show file-suggestions.
- */
- showFiles?: boolean;
- /**
- * Show reference-suggestions.
- */
- showReferences?: boolean;
- /**
- * Show folder-suggestions.
- */
- showFolders?: boolean;
- /**
- * Show typeParameter-suggestions.
- */
- showTypeParameters?: boolean;
- /**
- * Show issue-suggestions.
- */
- showIssues?: boolean;
- /**
- * Show user-suggestions.
- */
- showUsers?: boolean;
- /**
- * Show snippet-suggestions.
- */
- showSnippets?: boolean;
- }
- export interface ISmartSelectOptions {
- selectLeadingAndTrailingWhitespace?: boolean;
- selectSubwords?: boolean;
- }
- /**
- * Describes how to indent wrapped lines.
- */
- export enum WrappingIndent {
- /**
- * No indentation => wrapped lines begin at column 1.
- */
- None = 0,
- /**
- * Same => wrapped lines get the same indentation as the parent.
- */
- Same = 1,
- /**
- * Indent => wrapped lines get +1 indentation toward the parent.
- */
- Indent = 2,
- /**
- * DeepIndent => wrapped lines get +2 indentation toward the parent.
- */
- DeepIndent = 3
- }
- export interface EditorWrappingInfo {
- readonly isDominatedByLongLines: boolean;
- readonly isWordWrapMinified: boolean;
- readonly isViewportWrapping: boolean;
- readonly wrappingColumn: number;
- }
- /**
- * Configuration options for editor drop into behavior
- */
- export interface IDropIntoEditorOptions {
- /**
- * Enable dropping into editor.
- * Defaults to true.
- */
- enabled?: boolean;
- /**
- * Controls if a widget is shown after a drop.
- * Defaults to 'afterDrop'.
- */
- showDropSelector?: 'afterDrop' | 'never';
- }
- /**
- * Configuration options for editor pasting as into behavior
- */
- export interface IPasteAsOptions {
- /**
- * Enable paste as functionality in editors.
- * Defaults to true.
- */
- enabled?: boolean;
- /**
- * Controls if a widget is shown after a drop.
- * Defaults to 'afterPaste'.
- */
- showPasteSelector?: 'afterPaste' | 'never';
- }
- export enum EditorOption {
- acceptSuggestionOnCommitCharacter = 0,
- acceptSuggestionOnEnter = 1,
- accessibilitySupport = 2,
- accessibilityPageSize = 3,
- ariaLabel = 4,
- autoClosingBrackets = 5,
- screenReaderAnnounceInlineSuggestion = 6,
- autoClosingDelete = 7,
- autoClosingOvertype = 8,
- autoClosingQuotes = 9,
- autoIndent = 10,
- automaticLayout = 11,
- autoSurround = 12,
- bracketPairColorization = 13,
- guides = 14,
- codeLens = 15,
- codeLensFontFamily = 16,
- codeLensFontSize = 17,
- colorDecorators = 18,
- colorDecoratorsLimit = 19,
- columnSelection = 20,
- comments = 21,
- contextmenu = 22,
- copyWithSyntaxHighlighting = 23,
- cursorBlinking = 24,
- cursorSmoothCaretAnimation = 25,
- cursorStyle = 26,
- cursorSurroundingLines = 27,
- cursorSurroundingLinesStyle = 28,
- cursorWidth = 29,
- disableLayerHinting = 30,
- disableMonospaceOptimizations = 31,
- domReadOnly = 32,
- dragAndDrop = 33,
- dropIntoEditor = 34,
- emptySelectionClipboard = 35,
- experimentalWhitespaceRendering = 36,
- extraEditorClassName = 37,
- fastScrollSensitivity = 38,
- find = 39,
- fixedOverflowWidgets = 40,
- folding = 41,
- foldingStrategy = 42,
- foldingHighlight = 43,
- foldingImportsByDefault = 44,
- foldingMaximumRegions = 45,
- unfoldOnClickAfterEndOfLine = 46,
- fontFamily = 47,
- fontInfo = 48,
- fontLigatures = 49,
- fontSize = 50,
- fontWeight = 51,
- fontVariations = 52,
- formatOnPaste = 53,
- formatOnType = 54,
- glyphMargin = 55,
- gotoLocation = 56,
- hideCursorInOverviewRuler = 57,
- hover = 58,
- inDiffEditor = 59,
- inlineSuggest = 60,
- letterSpacing = 61,
- lightbulb = 62,
- lineDecorationsWidth = 63,
- lineHeight = 64,
- lineNumbers = 65,
- lineNumbersMinChars = 66,
- linkedEditing = 67,
- links = 68,
- matchBrackets = 69,
- minimap = 70,
- mouseStyle = 71,
- mouseWheelScrollSensitivity = 72,
- mouseWheelZoom = 73,
- multiCursorMergeOverlapping = 74,
- multiCursorModifier = 75,
- multiCursorPaste = 76,
- multiCursorLimit = 77,
- occurrencesHighlight = 78,
- overviewRulerBorder = 79,
- overviewRulerLanes = 80,
- padding = 81,
- pasteAs = 82,
- parameterHints = 83,
- peekWidgetDefaultFocus = 84,
- definitionLinkOpensInPeek = 85,
- quickSuggestions = 86,
- quickSuggestionsDelay = 87,
- readOnly = 88,
- readOnlyMessage = 89,
- renameOnType = 90,
- renderControlCharacters = 91,
- renderFinalNewline = 92,
- renderLineHighlight = 93,
- renderLineHighlightOnlyWhenFocus = 94,
- renderValidationDecorations = 95,
- renderWhitespace = 96,
- revealHorizontalRightPadding = 97,
- roundedSelection = 98,
- rulers = 99,
- scrollbar = 100,
- scrollBeyondLastColumn = 101,
- scrollBeyondLastLine = 102,
- scrollPredominantAxis = 103,
- selectionClipboard = 104,
- selectionHighlight = 105,
- selectOnLineNumbers = 106,
- showFoldingControls = 107,
- showUnused = 108,
- snippetSuggestions = 109,
- smartSelect = 110,
- smoothScrolling = 111,
- stickyScroll = 112,
- stickyTabStops = 113,
- stopRenderingLineAfter = 114,
- suggest = 115,
- suggestFontSize = 116,
- suggestLineHeight = 117,
- suggestOnTriggerCharacters = 118,
- suggestSelection = 119,
- tabCompletion = 120,
- tabIndex = 121,
- unicodeHighlighting = 122,
- unusualLineTerminators = 123,
- useShadowDOM = 124,
- useTabStops = 125,
- wordBreak = 126,
- wordSeparators = 127,
- wordWrap = 128,
- wordWrapBreakAfterCharacters = 129,
- wordWrapBreakBeforeCharacters = 130,
- wordWrapColumn = 131,
- wordWrapOverride1 = 132,
- wordWrapOverride2 = 133,
- wrappingIndent = 134,
- wrappingStrategy = 135,
- showDeprecated = 136,
- inlayHints = 137,
- editorClassName = 138,
- pixelRatio = 139,
- tabFocusMode = 140,
- layoutInfo = 141,
- wrappingInfo = 142,
- defaultColorDecorators = 143,
- colorDecoratorsActivatedOn = 144
- }
- export const EditorOptions: {
- acceptSuggestionOnCommitCharacter: IEditorOption<EditorOption.acceptSuggestionOnCommitCharacter, boolean>;
- acceptSuggestionOnEnter: IEditorOption<EditorOption.acceptSuggestionOnEnter, 'on' | 'off' | 'smart'>;
- accessibilitySupport: IEditorOption<EditorOption.accessibilitySupport, AccessibilitySupport>;
- accessibilityPageSize: IEditorOption<EditorOption.accessibilityPageSize, number>;
- ariaLabel: IEditorOption<EditorOption.ariaLabel, string>;
- screenReaderAnnounceInlineSuggestion: IEditorOption<EditorOption.screenReaderAnnounceInlineSuggestion, boolean>;
- autoClosingBrackets: IEditorOption<EditorOption.autoClosingBrackets, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
- autoClosingDelete: IEditorOption<EditorOption.autoClosingDelete, 'always' | 'never' | 'auto'>;
- autoClosingOvertype: IEditorOption<EditorOption.autoClosingOvertype, 'always' | 'never' | 'auto'>;
- autoClosingQuotes: IEditorOption<EditorOption.autoClosingQuotes, 'always' | 'languageDefined' | 'beforeWhitespace' | 'never'>;
- autoIndent: IEditorOption<EditorOption.autoIndent, EditorAutoIndentStrategy>;
- automaticLayout: IEditorOption<EditorOption.automaticLayout, boolean>;
- autoSurround: IEditorOption<EditorOption.autoSurround, 'languageDefined' | 'never' | 'quotes' | 'brackets'>;
- bracketPairColorization: IEditorOption<EditorOption.bracketPairColorization, Readonly<Required<IBracketPairColorizationOptions>>>;
- bracketPairGuides: IEditorOption<EditorOption.guides, Readonly<Required<IGuidesOptions>>>;
- stickyTabStops: IEditorOption<EditorOption.stickyTabStops, boolean>;
- codeLens: IEditorOption<EditorOption.codeLens, boolean>;
- codeLensFontFamily: IEditorOption<EditorOption.codeLensFontFamily, string>;
- codeLensFontSize: IEditorOption<EditorOption.codeLensFontSize, number>;
- colorDecorators: IEditorOption<EditorOption.colorDecorators, boolean>;
- colorDecoratorActivatedOn: IEditorOption<EditorOption.colorDecoratorsActivatedOn, 'clickAndHover' | 'click' | 'hover'>;
- colorDecoratorsLimit: IEditorOption<EditorOption.colorDecoratorsLimit, number>;
- columnSelection: IEditorOption<EditorOption.columnSelection, boolean>;
- comments: IEditorOption<EditorOption.comments, Readonly<Required<IEditorCommentsOptions>>>;
- contextmenu: IEditorOption<EditorOption.contextmenu, boolean>;
- copyWithSyntaxHighlighting: IEditorOption<EditorOption.copyWithSyntaxHighlighting, boolean>;
- cursorBlinking: IEditorOption<EditorOption.cursorBlinking, TextEditorCursorBlinkingStyle>;
- cursorSmoothCaretAnimation: IEditorOption<EditorOption.cursorSmoothCaretAnimation, 'on' | 'off' | 'explicit'>;
- cursorStyle: IEditorOption<EditorOption.cursorStyle, TextEditorCursorStyle>;
- cursorSurroundingLines: IEditorOption<EditorOption.cursorSurroundingLines, number>;
- cursorSurroundingLinesStyle: IEditorOption<EditorOption.cursorSurroundingLinesStyle, 'default' | 'all'>;
- cursorWidth: IEditorOption<EditorOption.cursorWidth, number>;
- disableLayerHinting: IEditorOption<EditorOption.disableLayerHinting, boolean>;
- disableMonospaceOptimizations: IEditorOption<EditorOption.disableMonospaceOptimizations, boolean>;
- domReadOnly: IEditorOption<EditorOption.domReadOnly, boolean>;
- dragAndDrop: IEditorOption<EditorOption.dragAndDrop, boolean>;
- emptySelectionClipboard: IEditorOption<EditorOption.emptySelectionClipboard, boolean>;
- dropIntoEditor: IEditorOption<EditorOption.dropIntoEditor, Readonly<Required<IDropIntoEditorOptions>>>;
- stickyScroll: IEditorOption<EditorOption.stickyScroll, Readonly<Required<IEditorStickyScrollOptions>>>;
- experimentalWhitespaceRendering: IEditorOption<EditorOption.experimentalWhitespaceRendering, 'off' | 'svg' | 'font'>;
- extraEditorClassName: IEditorOption<EditorOption.extraEditorClassName, string>;
- fastScrollSensitivity: IEditorOption<EditorOption.fastScrollSensitivity, number>;
- find: IEditorOption<EditorOption.find, Readonly<Required<IEditorFindOptions>>>;
- fixedOverflowWidgets: IEditorOption<EditorOption.fixedOverflowWidgets, boolean>;
- folding: IEditorOption<EditorOption.folding, boolean>;
- foldingStrategy: IEditorOption<EditorOption.foldingStrategy, 'auto' | 'indentation'>;
- foldingHighlight: IEditorOption<EditorOption.foldingHighlight, boolean>;
- foldingImportsByDefault: IEditorOption<EditorOption.foldingImportsByDefault, boolean>;
- foldingMaximumRegions: IEditorOption<EditorOption.foldingMaximumRegions, number>;
- unfoldOnClickAfterEndOfLine: IEditorOption<EditorOption.unfoldOnClickAfterEndOfLine, boolean>;
- fontFamily: IEditorOption<EditorOption.fontFamily, string>;
- fontInfo: IEditorOption<EditorOption.fontInfo, FontInfo>;
- fontLigatures2: IEditorOption<EditorOption.fontLigatures, string>;
- fontSize: IEditorOption<EditorOption.fontSize, number>;
- fontWeight: IEditorOption<EditorOption.fontWeight, string>;
- fontVariations: IEditorOption<EditorOption.fontVariations, string>;
- formatOnPaste: IEditorOption<EditorOption.formatOnPaste, boolean>;
- formatOnType: IEditorOption<EditorOption.formatOnType, boolean>;
- glyphMargin: IEditorOption<EditorOption.glyphMargin, boolean>;
- gotoLocation: IEditorOption<EditorOption.gotoLocation, Readonly<Required<IGotoLocationOptions>>>;
- hideCursorInOverviewRuler: IEditorOption<EditorOption.hideCursorInOverviewRuler, boolean>;
- hover: IEditorOption<EditorOption.hover, Readonly<Required<IEditorHoverOptions>>>;
- inDiffEditor: IEditorOption<EditorOption.inDiffEditor, boolean>;
- letterSpacing: IEditorOption<EditorOption.letterSpacing, number>;
- lightbulb: IEditorOption<EditorOption.lightbulb, Readonly<Required<IEditorLightbulbOptions>>>;
- lineDecorationsWidth: IEditorOption<EditorOption.lineDecorationsWidth, number>;
- lineHeight: IEditorOption<EditorOption.lineHeight, number>;
- lineNumbers: IEditorOption<EditorOption.lineNumbers, InternalEditorRenderLineNumbersOptions>;
- lineNumbersMinChars: IEditorOption<EditorOption.lineNumbersMinChars, number>;
- linkedEditing: IEditorOption<EditorOption.linkedEditing, boolean>;
- links: IEditorOption<EditorOption.links, boolean>;
- matchBrackets: IEditorOption<EditorOption.matchBrackets, 'always' | 'never' | 'near'>;
- minimap: IEditorOption<EditorOption.minimap, Readonly<Required<IEditorMinimapOptions>>>;
- mouseStyle: IEditorOption<EditorOption.mouseStyle, 'default' | 'text' | 'copy'>;
- mouseWheelScrollSensitivity: IEditorOption<EditorOption.mouseWheelScrollSensitivity, number>;
- mouseWheelZoom: IEditorOption<EditorOption.mouseWheelZoom, boolean>;
- multiCursorMergeOverlapping: IEditorOption<EditorOption.multiCursorMergeOverlapping, boolean>;
- multiCursorModifier: IEditorOption<EditorOption.multiCursorModifier, 'altKey' | 'metaKey' | 'ctrlKey'>;
- multiCursorPaste: IEditorOption<EditorOption.multiCursorPaste, 'spread' | 'full'>;
- multiCursorLimit: IEditorOption<EditorOption.multiCursorLimit, number>;
- occurrencesHighlight: IEditorOption<EditorOption.occurrencesHighlight, boolean>;
- overviewRulerBorder: IEditorOption<EditorOption.overviewRulerBorder, boolean>;
- overviewRulerLanes: IEditorOption<EditorOption.overviewRulerLanes, number>;
- padding: IEditorOption<EditorOption.padding, Readonly<Required<IEditorPaddingOptions>>>;
- pasteAs: IEditorOption<EditorOption.pasteAs, Readonly<Required<IPasteAsOptions>>>;
- parameterHints: IEditorOption<EditorOption.parameterHints, Readonly<Required<IEditorParameterHintOptions>>>;
- peekWidgetDefaultFocus: IEditorOption<EditorOption.peekWidgetDefaultFocus, 'tree' | 'editor'>;
- definitionLinkOpensInPeek: IEditorOption<EditorOption.definitionLinkOpensInPeek, boolean>;
- quickSuggestions: IEditorOption<EditorOption.quickSuggestions, InternalQuickSuggestionsOptions>;
- quickSuggestionsDelay: IEditorOption<EditorOption.quickSuggestionsDelay, number>;
- readOnly: IEditorOption<EditorOption.readOnly, boolean>;
- readOnlyMessage: IEditorOption<EditorOption.readOnlyMessage, any>;
- renameOnType: IEditorOption<EditorOption.renameOnType, boolean>;
- renderControlCharacters: IEditorOption<EditorOption.renderControlCharacters, boolean>;
- renderFinalNewline: IEditorOption<EditorOption.renderFinalNewline, 'on' | 'off' | 'dimmed'>;
- renderLineHighlight: IEditorOption<EditorOption.renderLineHighlight, 'all' | 'line' | 'none' | 'gutter'>;
- renderLineHighlightOnlyWhenFocus: IEditorOption<EditorOption.renderLineHighlightOnlyWhenFocus, boolean>;
- renderValidationDecorations: IEditorOption<EditorOption.renderValidationDecorations, 'on' | 'off' | 'editable'>;
- renderWhitespace: IEditorOption<EditorOption.renderWhitespace, 'all' | 'none' | 'boundary' | 'selection' | 'trailing'>;
- revealHorizontalRightPadding: IEditorOption<EditorOption.revealHorizontalRightPadding, number>;
- roundedSelection: IEditorOption<EditorOption.roundedSelection, boolean>;
- rulers: IEditorOption<EditorOption.rulers, {}>;
- scrollbar: IEditorOption<EditorOption.scrollbar, InternalEditorScrollbarOptions>;
- scrollBeyondLastColumn: IEditorOption<EditorOption.scrollBeyondLastColumn, number>;
- scrollBeyondLastLine: IEditorOption<EditorOption.scrollBeyondLastLine, boolean>;
- scrollPredominantAxis: IEditorOption<EditorOption.scrollPredominantAxis, boolean>;
- selectionClipboard: IEditorOption<EditorOption.selectionClipboard, boolean>;
- selectionHighlight: IEditorOption<EditorOption.selectionHighlight, boolean>;
- selectOnLineNumbers: IEditorOption<EditorOption.selectOnLineNumbers, boolean>;
- showFoldingControls: IEditorOption<EditorOption.showFoldingControls, 'always' | 'never' | 'mouseover'>;
- showUnused: IEditorOption<EditorOption.showUnused, boolean>;
- showDeprecated: IEditorOption<EditorOption.showDeprecated, boolean>;
- inlayHints: IEditorOption<EditorOption.inlayHints, Readonly<Required<IEditorInlayHintsOptions>>>;
- snippetSuggestions: IEditorOption<EditorOption.snippetSuggestions, 'none' | 'top' | 'bottom' | 'inline'>;
- smartSelect: IEditorOption<EditorOption.smartSelect, Readonly<Required<ISmartSelectOptions>>>;
- smoothScrolling: IEditorOption<EditorOption.smoothScrolling, boolean>;
- stopRenderingLineAfter: IEditorOption<EditorOption.stopRenderingLineAfter, number>;
- suggest: IEditorOption<EditorOption.suggest, Readonly<Required<ISuggestOptions>>>;
- inlineSuggest: IEditorOption<EditorOption.inlineSuggest, Readonly<Required<IInlineSuggestOptions>>>;
- suggestFontSize: IEditorOption<EditorOption.suggestFontSize, number>;
- suggestLineHeight: IEditorOption<EditorOption.suggestLineHeight, number>;
- suggestOnTriggerCharacters: IEditorOption<EditorOption.suggestOnTriggerCharacters, boolean>;
- suggestSelection: IEditorOption<EditorOption.suggestSelection, 'first' | 'recentlyUsed' | 'recentlyUsedByPrefix'>;
- tabCompletion: IEditorOption<EditorOption.tabCompletion, 'on' | 'off' | 'onlySnippets'>;
- tabIndex: IEditorOption<EditorOption.tabIndex, number>;
- unicodeHighlight: IEditorOption<EditorOption.unicodeHighlighting, any>;
- unusualLineTerminators: IEditorOption<EditorOption.unusualLineTerminators, 'auto' | 'off' | 'prompt'>;
- useShadowDOM: IEditorOption<EditorOption.useShadowDOM, boolean>;
- useTabStops: IEditorOption<EditorOption.useTabStops, boolean>;
- wordBreak: IEditorOption<EditorOption.wordBreak, 'normal' | 'keepAll'>;
- wordSeparators: IEditorOption<EditorOption.wordSeparators, string>;
- wordWrap: IEditorOption<EditorOption.wordWrap, 'on' | 'off' | 'wordWrapColumn' | 'bounded'>;
- wordWrapBreakAfterCharacters: IEditorOption<EditorOption.wordWrapBreakAfterCharacters, string>;
- wordWrapBreakBeforeCharacters: IEditorOption<EditorOption.wordWrapBreakBeforeCharacters, string>;
- wordWrapColumn: IEditorOption<EditorOption.wordWrapColumn, number>;
- wordWrapOverride1: IEditorOption<EditorOption.wordWrapOverride1, 'on' | 'off' | 'inherit'>;
- wordWrapOverride2: IEditorOption<EditorOption.wordWrapOverride2, 'on' | 'off' | 'inherit'>;
- editorClassName: IEditorOption<EditorOption.editorClassName, string>;
- defaultColorDecorators: IEditorOption<EditorOption.defaultColorDecorators, boolean>;
- pixelRatio: IEditorOption<EditorOption.pixelRatio, number>;
- tabFocusMode: IEditorOption<EditorOption.tabFocusMode, boolean>;
- layoutInfo: IEditorOption<EditorOption.layoutInfo, EditorLayoutInfo>;
- wrappingInfo: IEditorOption<EditorOption.wrappingInfo, EditorWrappingInfo>;
- wrappingIndent: IEditorOption<EditorOption.wrappingIndent, WrappingIndent>;
- wrappingStrategy: IEditorOption<EditorOption.wrappingStrategy, 'simple' | 'advanced'>;
- };
- type EditorOptionsType = typeof EditorOptions;
- type FindEditorOptionsKeyById<T extends EditorOption> = {
- [K in keyof EditorOptionsType]: EditorOptionsType[K]['id'] extends T ? K : never;
- }[keyof EditorOptionsType];
- type ComputedEditorOptionValue<T extends IEditorOption<any, any>> = T extends IEditorOption<any, infer R> ? R : never;
- export type FindComputedEditorOptionValueById<T extends EditorOption> = NonNullable<ComputedEditorOptionValue<EditorOptionsType[FindEditorOptionsKeyById<T>]>>;
- export interface IEditorConstructionOptions extends IEditorOptions {
- /**
- * The initial editor dimension (to avoid measuring the container).
- */
- dimension?: IDimension;
- /**
- * Place overflow widgets inside an external DOM node.
- * Defaults to an internal DOM node.
- */
- overflowWidgetsDomNode?: HTMLElement;
- }
- /**
- * A view zone is a full horizontal rectangle that 'pushes' text down.
- * The editor reserves space for view zones when rendering.
- */
- export interface IViewZone {
- /**
- * The line number after which this zone should appear.
- * Use 0 to place a view zone before the first line number.
- */
- afterLineNumber: number;
- /**
- * The column after which this zone should appear.
- * If not set, the maxLineColumn of `afterLineNumber` will be used.
- * This is relevant for wrapped lines.
- */
- afterColumn?: number;
- /**
- * If the `afterColumn` has multiple view columns, the affinity specifies which one to use. Defaults to `none`.
- */
- afterColumnAffinity?: PositionAffinity;
- /**
- * Render the zone even when its line is hidden.
- */
- showInHiddenAreas?: boolean;
- /**
- * Tiebreaker that is used when multiple view zones want to be after the same line.
- * Defaults to `afterColumn` otherwise 10000;
- */
- ordinal?: number;
- /**
- * Suppress mouse down events.
- * If set, the editor will attach a mouse down listener to the view zone and .preventDefault on it.
- * Defaults to false
- */
- suppressMouseDown?: boolean;
- /**
- * The height in lines of the view zone.
- * If specified, `heightInPx` will be used instead of this.
- * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.
- */
- heightInLines?: number;
- /**
- * The height in px of the view zone.
- * If this is set, the editor will give preference to it rather than `heightInLines` above.
- * If neither `heightInPx` nor `heightInLines` is specified, a default of `heightInLines` = 1 will be chosen.
- */
- heightInPx?: number;
- /**
- * The minimum width in px of the view zone.
- * If this is set, the editor will ensure that the scroll width is >= than this value.
- */
- minWidthInPx?: number;
- /**
- * The dom node of the view zone
- */
- domNode: HTMLElement;
- /**
- * An optional dom node for the view zone that will be placed in the margin area.
- */
- marginDomNode?: HTMLElement | null;
- /**
- * Callback which gives the relative top of the view zone as it appears (taking scrolling into account).
- */
- onDomNodeTop?: (top: number) => void;
- /**
- * Callback which gives the height in pixels of the view zone.
- */
- onComputedHeight?: (height: number) => void;
- }
- /**
- * An accessor that allows for zones to be added or removed.
- */
- export interface IViewZoneChangeAccessor {
- /**
- * Create a new view zone.
- * @param zone Zone to create
- * @return A unique identifier to the view zone.
- */
- addZone(zone: IViewZone): string;
- /**
- * Remove a zone
- * @param id A unique identifier to the view zone, as returned by the `addZone` call.
- */
- removeZone(id: string): void;
- /**
- * Change a zone's position.
- * The editor will rescan the `afterLineNumber` and `afterColumn` properties of a view zone.
- */
- layoutZone(id: string): void;
- }
- /**
- * A positioning preference for rendering content widgets.
- */
- export enum ContentWidgetPositionPreference {
- /**
- * Place the content widget exactly at a position
- */
- EXACT = 0,
- /**
- * Place the content widget above a position
- */
- ABOVE = 1,
- /**
- * Place the content widget below a position
- */
- BELOW = 2
- }
- /**
- * A position for rendering content widgets.
- */
- export interface IContentWidgetPosition {
- /**
- * Desired position which serves as an anchor for placing the content widget.
- * The widget will be placed above, at, or below the specified position, based on the
- * provided preference. The widget will always touch this position.
- *
- * Given sufficient horizontal space, the widget will be placed to the right of the
- * passed in position. This can be tweaked by providing a `secondaryPosition`.
- *
- * @see preference
- * @see secondaryPosition
- */
- position: IPosition | null;
- /**
- * Optionally, a secondary position can be provided to further define the placing of
- * the content widget. The secondary position must have the same line number as the
- * primary position. If possible, the widget will be placed such that it also touches
- * the secondary position.
- */
- secondaryPosition?: IPosition | null;
- /**
- * Placement preference for position, in order of preference.
- */
- preference: ContentWidgetPositionPreference[];
- /**
- * Placement preference when multiple view positions refer to the same (model) position.
- * This plays a role when injected text is involved.
- */
- positionAffinity?: PositionAffinity;
- }
- /**
- * A content widget renders inline with the text and can be easily placed 'near' an editor position.
- */
- export interface IContentWidget {
- /**
- * Render this content widget in a location where it could overflow the editor's view dom node.
- */
- allowEditorOverflow?: boolean;
- /**
- * Call preventDefault() on mousedown events that target the content widget.
- */
- suppressMouseDown?: boolean;
- /**
- * Get a unique identifier of the content widget.
- */
- getId(): string;
- /**
- * Get the dom node of the content widget.
- */
- getDomNode(): HTMLElement;
- /**
- * Get the placement of the content widget.
- * If null is returned, the content widget will be placed off screen.
- */
- getPosition(): IContentWidgetPosition | null;
- /**
- * Optional function that is invoked before rendering
- * the content widget. If a dimension is returned the editor will
- * attempt to use it.
- */
- beforeRender?(): IDimension | null;
- /**
- * Optional function that is invoked after rendering the content
- * widget. Is being invoked with the selected position preference
- * or `null` if not rendered.
- */
- afterRender?(position: ContentWidgetPositionPreference | null): void;
- }
- /**
- * A positioning preference for rendering overlay widgets.
- */
- export enum OverlayWidgetPositionPreference {
- /**
- * Position the overlay widget in the top right corner
- */
- TOP_RIGHT_CORNER = 0,
- /**
- * Position the overlay widget in the bottom right corner
- */
- BOTTOM_RIGHT_CORNER = 1,
- /**
- * Position the overlay widget in the top center
- */
- TOP_CENTER = 2
- }
- /**
- * A position for rendering overlay widgets.
- */
- export interface IOverlayWidgetPosition {
- /**
- * The position preference for the overlay widget.
- */
- preference: OverlayWidgetPositionPreference | null;
- }
- /**
- * An overlay widgets renders on top of the text.
- */
- export interface IOverlayWidget {
- /**
- * Get a unique identifier of the overlay widget.
- */
- getId(): string;
- /**
- * Get the dom node of the overlay widget.
- */
- getDomNode(): HTMLElement;
- /**
- * Get the placement of the overlay widget.
- * If null is returned, the overlay widget is responsible to place itself.
- */
- getPosition(): IOverlayWidgetPosition | null;
- }
- /**
- * A glyph margin widget renders in the editor glyph margin.
- */
- export interface IGlyphMarginWidget {
- /**
- * Get a unique identifier of the glyph widget.
- */
- getId(): string;
- /**
- * Get the dom node of the glyph widget.
- */
- getDomNode(): HTMLElement;
- /**
- * Get the placement of the glyph widget.
- */
- getPosition(): IGlyphMarginWidgetPosition;
- }
- /**
- * A position for rendering glyph margin widgets.
- */
- export interface IGlyphMarginWidgetPosition {
- /**
- * The glyph margin lane where the widget should be shown.
- */
- lane: GlyphMarginLane;
- /**
- * The priority order of the widget, used for determining which widget
- * to render when there are multiple.
- */
- zIndex: number;
- /**
- * The editor range that this widget applies to.
- */
- range: IRange;
- }
- /**
- * Type of hit element with the mouse in the editor.
- */
- export enum MouseTargetType {
- /**
- * Mouse is on top of an unknown element.
- */
- UNKNOWN = 0,
- /**
- * Mouse is on top of the textarea used for input.
- */
- TEXTAREA = 1,
- /**
- * Mouse is on top of the glyph margin
- */
- GUTTER_GLYPH_MARGIN = 2,
- /**
- * Mouse is on top of the line numbers
- */
- GUTTER_LINE_NUMBERS = 3,
- /**
- * Mouse is on top of the line decorations
- */
- GUTTER_LINE_DECORATIONS = 4,
- /**
- * Mouse is on top of the whitespace left in the gutter by a view zone.
- */
- GUTTER_VIEW_ZONE = 5,
- /**
- * Mouse is on top of text in the content.
- */
- CONTENT_TEXT = 6,
- /**
- * Mouse is on top of empty space in the content (e.g. after line text or below last line)
- */
- CONTENT_EMPTY = 7,
- /**
- * Mouse is on top of a view zone in the content.
- */
- CONTENT_VIEW_ZONE = 8,
- /**
- * Mouse is on top of a content widget.
- */
- CONTENT_WIDGET = 9,
- /**
- * Mouse is on top of the decorations overview ruler.
- */
- OVERVIEW_RULER = 10,
- /**
- * Mouse is on top of a scrollbar.
- */
- SCROLLBAR = 11,
- /**
- * Mouse is on top of an overlay widget.
- */
- OVERLAY_WIDGET = 12,
- /**
- * Mouse is outside of the editor.
- */
- OUTSIDE_EDITOR = 13
- }
- export interface IBaseMouseTarget {
- /**
- * The target element
- */
- readonly element: Element | null;
- /**
- * The 'approximate' editor position
- */
- readonly position: Position | null;
- /**
- * Desired mouse column (e.g. when position.column gets clamped to text length -- clicking after text on a line).
- */
- readonly mouseColumn: number;
- /**
- * The 'approximate' editor range
- */
- readonly range: Range | null;
- }
- export interface IMouseTargetUnknown extends IBaseMouseTarget {
- readonly type: MouseTargetType.UNKNOWN;
- }
- export interface IMouseTargetTextarea extends IBaseMouseTarget {
- readonly type: MouseTargetType.TEXTAREA;
- readonly position: null;
- readonly range: null;
- }
- export interface IMouseTargetMarginData {
- readonly isAfterLines: boolean;
- readonly glyphMarginLeft: number;
- readonly glyphMarginWidth: number;
- readonly lineNumbersWidth: number;
- readonly offsetX: number;
- }
- export interface IMouseTargetMargin extends IBaseMouseTarget {
- readonly type: MouseTargetType.GUTTER_GLYPH_MARGIN | MouseTargetType.GUTTER_LINE_NUMBERS | MouseTargetType.GUTTER_LINE_DECORATIONS;
- readonly position: Position;
- readonly range: Range;
- readonly detail: IMouseTargetMarginData;
- }
- export interface IMouseTargetViewZoneData {
- readonly viewZoneId: string;
- readonly positionBefore: Position | null;
- readonly positionAfter: Position | null;
- readonly position: Position;
- readonly afterLineNumber: number;
- }
- export interface IMouseTargetViewZone extends IBaseMouseTarget {
- readonly type: MouseTargetType.GUTTER_VIEW_ZONE | MouseTargetType.CONTENT_VIEW_ZONE;
- readonly position: Position;
- readonly range: Range;
- readonly detail: IMouseTargetViewZoneData;
- }
- export interface IMouseTargetContentTextData {
- readonly mightBeForeignElement: boolean;
- }
- export interface IMouseTargetContentText extends IBaseMouseTarget {
- readonly type: MouseTargetType.CONTENT_TEXT;
- readonly position: Position;
- readonly range: Range;
- readonly detail: IMouseTargetContentTextData;
- }
- export interface IMouseTargetContentEmptyData {
- readonly isAfterLines: boolean;
- readonly horizontalDistanceToText?: number;
- }
- export interface IMouseTargetContentEmpty extends IBaseMouseTarget {
- readonly type: MouseTargetType.CONTENT_EMPTY;
- readonly position: Position;
- readonly range: Range;
- readonly detail: IMouseTargetContentEmptyData;
- }
- export interface IMouseTargetContentWidget extends IBaseMouseTarget {
- readonly type: MouseTargetType.CONTENT_WIDGET;
- readonly position: null;
- readonly range: null;
- readonly detail: string;
- }
- export interface IMouseTargetOverlayWidget extends IBaseMouseTarget {
- readonly type: MouseTargetType.OVERLAY_WIDGET;
- readonly position: null;
- readonly range: null;
- readonly detail: string;
- }
- export interface IMouseTargetScrollbar extends IBaseMouseTarget {
- readonly type: MouseTargetType.SCROLLBAR;
- readonly position: Position;
- readonly range: Range;
- }
- export interface IMouseTargetOverviewRuler extends IBaseMouseTarget {
- readonly type: MouseTargetType.OVERVIEW_RULER;
- }
- export interface IMouseTargetOutsideEditor extends IBaseMouseTarget {
- readonly type: MouseTargetType.OUTSIDE_EDITOR;
- readonly outsidePosition: 'above' | 'below' | 'left' | 'right';
- readonly outsideDistance: number;
- }
- /**
- * Target hit with the mouse in the editor.
- */
- export type IMouseTarget = (IMouseTargetUnknown | IMouseTargetTextarea | IMouseTargetMargin | IMouseTargetViewZone | IMouseTargetContentText | IMouseTargetContentEmpty | IMouseTargetContentWidget | IMouseTargetOverlayWidget | IMouseTargetScrollbar | IMouseTargetOverviewRuler | IMouseTargetOutsideEditor);
- /**
- * A mouse event originating from the editor.
- */
- export interface IEditorMouseEvent {
- readonly event: IMouseEvent;
- readonly target: IMouseTarget;
- }
- export interface IPartialEditorMouseEvent {
- readonly event: IMouseEvent;
- readonly target: IMouseTarget | null;
- }
- /**
- * A paste event originating from the editor.
- */
- export interface IPasteEvent {
- readonly range: Range;
- readonly languageId: string | null;
- }
- export interface IDiffEditorConstructionOptions extends IDiffEditorOptions, IEditorConstructionOptions {
- /**
- * Place overflow widgets inside an external DOM node.
- * Defaults to an internal DOM node.
- */
- overflowWidgetsDomNode?: HTMLElement;
- /**
- * Aria label for original editor.
- */
- originalAriaLabel?: string;
- /**
- * Aria label for modified editor.
- */
- modifiedAriaLabel?: string;
- }
- /**
- * A rich code editor.
- */
- export interface ICodeEditor extends IEditor {
- /**
- * An event emitted when the content of the current model has changed.
- * @event
- */
- readonly onDidChangeModelContent: IEvent<IModelContentChangedEvent>;
- /**
- * An event emitted when the language of the current model has changed.
- * @event
- */
- readonly onDidChangeModelLanguage: IEvent<IModelLanguageChangedEvent>;
- /**
- * An event emitted when the language configuration of the current model has changed.
- * @event
- */
- readonly onDidChangeModelLanguageConfiguration: IEvent<IModelLanguageConfigurationChangedEvent>;
- /**
- * An event emitted when the options of the current model has changed.
- * @event
- */
- readonly onDidChangeModelOptions: IEvent<IModelOptionsChangedEvent>;
- /**
- * An event emitted when the configuration of the editor has changed. (e.g. `editor.updateOptions()`)
- * @event
- */
- readonly onDidChangeConfiguration: IEvent<ConfigurationChangedEvent>;
- /**
- * An event emitted when the cursor position has changed.
- * @event
- */
- readonly onDidChangeCursorPosition: IEvent<ICursorPositionChangedEvent>;
- /**
- * An event emitted when the cursor selection has changed.
- * @event
- */
- readonly onDidChangeCursorSelection: IEvent<ICursorSelectionChangedEvent>;
- /**
- * An event emitted when the model of this editor has changed (e.g. `editor.setModel()`).
- * @event
- */
- readonly onDidChangeModel: IEvent<IModelChangedEvent>;
- /**
- * An event emitted when the decorations of the current model have changed.
- * @event
- */
- readonly onDidChangeModelDecorations: IEvent<IModelDecorationsChangedEvent>;
- /**
- * An event emitted when the text inside this editor gained focus (i.e. cursor starts blinking).
- * @event
- */
- readonly onDidFocusEditorText: IEvent<void>;
- /**
- * An event emitted when the text inside this editor lost focus (i.e. cursor stops blinking).
- * @event
- */
- readonly onDidBlurEditorText: IEvent<void>;
- /**
- * An event emitted when the text inside this editor or an editor widget gained focus.
- * @event
- */
- readonly onDidFocusEditorWidget: IEvent<void>;
- /**
- * An event emitted when the text inside this editor or an editor widget lost focus.
- * @event
- */
- readonly onDidBlurEditorWidget: IEvent<void>;
- /**
- * An event emitted after composition has started.
- */
- readonly onDidCompositionStart: IEvent<void>;
- /**
- * An event emitted after composition has ended.
- */
- readonly onDidCompositionEnd: IEvent<void>;
- /**
- * An event emitted when editing failed because the editor is read-only.
- * @event
- */
- readonly onDidAttemptReadOnlyEdit: IEvent<void>;
- /**
- * An event emitted when users paste text in the editor.
- * @event
- */
- readonly onDidPaste: IEvent<IPasteEvent>;
- /**
- * An event emitted on a "mouseup".
- * @event
- */
- readonly onMouseUp: IEvent<IEditorMouseEvent>;
- /**
- * An event emitted on a "mousedown".
- * @event
- */
- readonly onMouseDown: IEvent<IEditorMouseEvent>;
- /**
- * An event emitted on a "contextmenu".
- * @event
- */
- readonly onContextMenu: IEvent<IEditorMouseEvent>;
- /**
- * An event emitted on a "mousemove".
- * @event
- */
- readonly onMouseMove: IEvent<IEditorMouseEvent>;
- /**
- * An event emitted on a "mouseleave".
- * @event
- */
- readonly onMouseLeave: IEvent<IPartialEditorMouseEvent>;
- /**
- * An event emitted on a "keyup".
- * @event
- */
- readonly onKeyUp: IEvent<IKeyboardEvent>;
- /**
- * An event emitted on a "keydown".
- * @event
- */
- readonly onKeyDown: IEvent<IKeyboardEvent>;
- /**
- * An event emitted when the layout of the editor has changed.
- * @event
- */
- readonly onDidLayoutChange: IEvent<EditorLayoutInfo>;
- /**
- * An event emitted when the content width or content height in the editor has changed.
- * @event
- */
- readonly onDidContentSizeChange: IEvent<IContentSizeChangedEvent>;
- /**
- * An event emitted when the scroll in the editor has changed.
- * @event
- */
- readonly onDidScrollChange: IEvent<IScrollEvent>;
- /**
- * An event emitted when hidden areas change in the editor (e.g. due to folding).
- * @event
- */
- readonly onDidChangeHiddenAreas: IEvent<void>;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): ICodeEditorViewState | null;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: ICodeEditorViewState | null): void;
- /**
- * Returns true if the text inside this editor or an editor widget has focus.
- */
- hasWidgetFocus(): boolean;
- /**
- * Get a contribution of this editor.
- * @id Unique identifier of the contribution.
- * @return The contribution or null if contribution not found.
- */
- getContribution<T extends IEditorContribution>(id: string): T | null;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): ITextModel | null;
- /**
- * Sets the current model attached to this editor.
- * If the previous model was created by the editor via the value key in the options
- * literal object, it will be destroyed. Otherwise, if the previous model was set
- * via setModel, or the model key in the options literal object, the previous model
- * will not be destroyed.
- * It is safe to call setModel(null) to simply detach the current model from the editor.
- */
- setModel(model: ITextModel | null): void;
- /**
- * Gets all the editor computed options.
- */
- getOptions(): IComputedEditorOptions;
- /**
- * Gets a specific editor option.
- */
- getOption<T extends EditorOption>(id: T): FindComputedEditorOptionValueById<T>;
- /**
- * Returns the editor's configuration (without any validation or defaults).
- */
- getRawOptions(): IEditorOptions;
- /**
- * Get value of the current model attached to this editor.
- * @see {@link ITextModel.getValue}
- */
- getValue(options?: {
- preserveBOM: boolean;
- lineEnding: string;
- }): string;
- /**
- * Set the value of the current model attached to this editor.
- * @see {@link ITextModel.setValue}
- */
- setValue(newValue: string): void;
- /**
- * Get the width of the editor's content.
- * This is information that is "erased" when computing `scrollWidth = Math.max(contentWidth, width)`
- */
- getContentWidth(): number;
- /**
- * Get the scrollWidth of the editor's viewport.
- */
- getScrollWidth(): number;
- /**
- * Get the scrollLeft of the editor's viewport.
- */
- getScrollLeft(): number;
- /**
- * Get the height of the editor's content.
- * This is information that is "erased" when computing `scrollHeight = Math.max(contentHeight, height)`
- */
- getContentHeight(): number;
- /**
- * Get the scrollHeight of the editor's viewport.
- */
- getScrollHeight(): number;
- /**
- * Get the scrollTop of the editor's viewport.
- */
- getScrollTop(): number;
- /**
- * Change the scrollLeft of the editor's viewport.
- */
- setScrollLeft(newScrollLeft: number, scrollType?: ScrollType): void;
- /**
- * Change the scrollTop of the editor's viewport.
- */
- setScrollTop(newScrollTop: number, scrollType?: ScrollType): void;
- /**
- * Change the scroll position of the editor's viewport.
- */
- setScrollPosition(position: INewScrollPosition, scrollType?: ScrollType): void;
- /**
- * Check if the editor is currently scrolling towards a different scroll position.
- */
- hasPendingScrollAnimation(): boolean;
- /**
- * Get an action that is a contribution to this editor.
- * @id Unique identifier of the contribution.
- * @return The action or null if action not found.
- */
- getAction(id: string): IEditorAction | null;
- /**
- * Execute a command on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param command The command to execute
- */
- executeCommand(source: string | null | undefined, command: ICommand): void;
- /**
- * Create an "undo stop" in the undo-redo stack.
- */
- pushUndoStop(): boolean;
- /**
- * Remove the "undo stop" in the undo-redo stack.
- */
- popUndoStop(): boolean;
- /**
- * Execute edits on the editor.
- * The edits will land on the undo-redo stack, but no "undo stop" will be pushed.
- * @param source The source of the call.
- * @param edits The edits to execute.
- * @param endCursorState Cursor state after the edits were applied.
- */
- executeEdits(source: string | null | undefined, edits: IIdentifiedSingleEditOperation[], endCursorState?: ICursorStateComputer | Selection[]): boolean;
- /**
- * Execute multiple (concomitant) commands on the editor.
- * @param source The source of the call.
- * @param command The commands to execute
- */
- executeCommands(source: string | null | undefined, commands: (ICommand | null)[]): void;
- /**
- * Get all the decorations on a line (filtering out decorations from other editors).
- */
- getLineDecorations(lineNumber: number): IModelDecoration[] | null;
- /**
- * Get all the decorations for a range (filtering out decorations from other editors).
- */
- getDecorationsInRange(range: Range): IModelDecoration[] | null;
- /**
- * All decorations added through this call will get the ownerId of this editor.
- * @deprecated Use `createDecorationsCollection`
- * @see createDecorationsCollection
- */
- deltaDecorations(oldDecorations: string[], newDecorations: IModelDeltaDecoration[]): string[];
- /**
- * Remove previously added decorations.
- */
- removeDecorations(decorationIds: string[]): void;
- /**
- * Get the layout info for the editor.
- */
- getLayoutInfo(): EditorLayoutInfo;
- /**
- * Returns the ranges that are currently visible.
- * Does not account for horizontal scrolling.
- */
- getVisibleRanges(): Range[];
- /**
- * Get the vertical position (top offset) for the line's top w.r.t. to the first line.
- */
- getTopForLineNumber(lineNumber: number): number;
- /**
- * Get the vertical position (top offset) for the line's bottom w.r.t. to the first line.
- */
- getBottomForLineNumber(lineNumber: number): number;
- /**
- * Get the vertical position (top offset) for the position w.r.t. to the first line.
- */
- getTopForPosition(lineNumber: number, column: number): number;
- /**
- * Write the screen reader content to be the current selection
- */
- writeScreenReaderContent(reason: string): void;
- /**
- * Returns the editor's container dom node
- */
- getContainerDomNode(): HTMLElement;
- /**
- * Returns the editor's dom node
- */
- getDomNode(): HTMLElement | null;
- /**
- * Add a content widget. Widgets must have unique ids, otherwise they will be overwritten.
- */
- addContentWidget(widget: IContentWidget): void;
- /**
- * Layout/Reposition a content widget. This is a ping to the editor to call widget.getPosition()
- * and update appropriately.
- */
- layoutContentWidget(widget: IContentWidget): void;
- /**
- * Remove a content widget.
- */
- removeContentWidget(widget: IContentWidget): void;
- /**
- * Add an overlay widget. Widgets must have unique ids, otherwise they will be overwritten.
- */
- addOverlayWidget(widget: IOverlayWidget): void;
- /**
- * Layout/Reposition an overlay widget. This is a ping to the editor to call widget.getPosition()
- * and update appropriately.
- */
- layoutOverlayWidget(widget: IOverlayWidget): void;
- /**
- * Remove an overlay widget.
- */
- removeOverlayWidget(widget: IOverlayWidget): void;
- /**
- * Add a glyph margin widget. Widgets must have unique ids, otherwise they will be overwritten.
- */
- addGlyphMarginWidget(widget: IGlyphMarginWidget): void;
- /**
- * Layout/Reposition a glyph margin widget. This is a ping to the editor to call widget.getPosition()
- * and update appropriately.
- */
- layoutGlyphMarginWidget(widget: IGlyphMarginWidget): void;
- /**
- * Remove a glyph margin widget.
- */
- removeGlyphMarginWidget(widget: IGlyphMarginWidget): void;
- /**
- * Change the view zones. View zones are lost when a new model is attached to the editor.
- */
- changeViewZones(callback: (accessor: IViewZoneChangeAccessor) => void): void;
- /**
- * Get the horizontal position (left offset) for the column w.r.t to the beginning of the line.
- * This method works only if the line `lineNumber` is currently rendered (in the editor's viewport).
- * Use this method with caution.
- */
- getOffsetForColumn(lineNumber: number, column: number): number;
- /**
- * Force an editor render now.
- */
- render(forceRedraw?: boolean): void;
- /**
- * Get the hit test target at coordinates `clientX` and `clientY`.
- * The coordinates are relative to the top-left of the viewport.
- *
- * @returns Hit test target or null if the coordinates fall outside the editor or the editor has no model.
- */
- getTargetAtClientPoint(clientX: number, clientY: number): IMouseTarget | null;
- /**
- * Get the visible position for `position`.
- * The result position takes scrolling into account and is relative to the top left corner of the editor.
- * Explanation 1: the results of this method will change for the same `position` if the user scrolls the editor.
- * Explanation 2: the results of this method will not change if the container of the editor gets repositioned.
- * Warning: the results of this method are inaccurate for positions that are outside the current editor viewport.
- */
- getScrolledVisiblePosition(position: IPosition): {
- top: number;
- left: number;
- height: number;
- } | null;
- /**
- * Apply the same font settings as the editor to `target`.
- */
- applyFontInfo(target: HTMLElement): void;
- setBanner(bannerDomNode: HTMLElement | null, height: number): void;
- }
- /**
- * A rich diff editor.
- */
- export interface IDiffEditor extends IEditor {
- /**
- * @see {@link ICodeEditor.getContainerDomNode}
- */
- getContainerDomNode(): HTMLElement;
- /**
- * An event emitted when the diff information computed by this diff editor has been updated.
- * @event
- */
- readonly onDidUpdateDiff: IEvent<void>;
- /**
- * An event emitted when the diff model is changed (i.e. the diff editor shows new content).
- * @event
- */
- readonly onDidChangeModel: IEvent<void>;
- /**
- * Saves current view state of the editor in a serializable object.
- */
- saveViewState(): IDiffEditorViewState | null;
- /**
- * Restores the view state of the editor from a serializable object generated by `saveViewState`.
- */
- restoreViewState(state: IDiffEditorViewState | null): void;
- /**
- * Type the getModel() of IEditor.
- */
- getModel(): IDiffEditorModel | null;
- createViewModel(model: IDiffEditorModel): IDiffEditorViewModel;
- /**
- * Sets the current model attached to this editor.
- * If the previous model was created by the editor via the value key in the options
- * literal object, it will be destroyed. Otherwise, if the previous model was set
- * via setModel, or the model key in the options literal object, the previous model
- * will not be destroyed.
- * It is safe to call setModel(null) to simply detach the current model from the editor.
- */
- setModel(model: IDiffEditorModel | IDiffEditorViewModel | null): void;
- /**
- * Get the `original` editor.
- */
- getOriginalEditor(): ICodeEditor;
- /**
- * Get the `modified` editor.
- */
- getModifiedEditor(): ICodeEditor;
- /**
- * Get the computed diff information.
- */
- getLineChanges(): ILineChange[] | null;
- /**
- * Update the editor's options after the editor has been created.
- */
- updateOptions(newOptions: IDiffEditorOptions): void;
- diffReviewNext(): void;
- diffReviewPrev(): void;
- }
- export class FontInfo extends BareFontInfo {
- readonly _editorStylingBrand: void;
- readonly version: number;
- readonly isTrusted: boolean;
- readonly isMonospace: boolean;
- readonly typicalHalfwidthCharacterWidth: number;
- readonly typicalFullwidthCharacterWidth: number;
- readonly canUseHalfwidthRightwardsArrow: boolean;
- readonly spaceWidth: number;
- readonly middotWidth: number;
- readonly wsmiddotWidth: number;
- readonly maxDigitWidth: number;
- }
- export class BareFontInfo {
- readonly _bareFontInfoBrand: void;
- readonly pixelRatio: number;
- readonly fontFamily: string;
- readonly fontWeight: string;
- readonly fontSize: number;
- readonly fontFeatureSettings: string;
- readonly fontVariationSettings: string;
- readonly lineHeight: number;
- readonly letterSpacing: number;
- }
- export const EditorZoom: IEditorZoom;
- export interface IEditorZoom {
- onDidChangeZoomLevel: IEvent<number>;
- getZoomLevel(): number;
- setZoomLevel(zoomLevel: number): void;
- }
- //compatibility:
- export type IReadOnlyModel = ITextModel;
- export type IModel = ITextModel;
- }
- declare namespace monaco.languages {
- export interface IRelativePattern {
- /**
- * A base file path to which this pattern will be matched against relatively.
- */
- readonly base: string;
- /**
- * A file glob pattern like `*.{ts,js}` that will be matched on file paths
- * relative to the base path.
- *
- * Example: Given a base of `/home/work/folder` and a file path of `/home/work/folder/index.js`,
- * the file glob pattern will match on `index.js`.
- */
- readonly pattern: string;
- }
- export type LanguageSelector = string | LanguageFilter | ReadonlyArray<string | LanguageFilter>;
- export interface LanguageFilter {
- readonly language?: string;
- readonly scheme?: string;
- readonly pattern?: string | IRelativePattern;
- readonly notebookType?: string;
- /**
- * This provider is implemented in the UI thread.
- */
- readonly hasAccessToAllModels?: boolean;
- readonly exclusive?: boolean;
- /**
- * This provider comes from a builtin extension.
- */
- readonly isBuiltin?: boolean;
- }
- /**
- * Register information about a new language.
- */
- export function register(language: ILanguageExtensionPoint): void;
- /**
- * Get the information of all the registered languages.
- */
- export function getLanguages(): ILanguageExtensionPoint[];
- export function getEncodedLanguageId(languageId: string): number;
- /**
- * An event emitted when a language is associated for the first time with a text model.
- * @event
- */
- export function onLanguage(languageId: string, callback: () => void): IDisposable;
- /**
- * An event emitted when a language is associated for the first time with a text model or
- * whena language is encountered during the tokenization of another language.
- * @event
- */
- export function onLanguageEncountered(languageId: string, callback: () => void): IDisposable;
- /**
- * Set the editing configuration for a language.
- */
- export function setLanguageConfiguration(languageId: string, configuration: LanguageConfiguration): IDisposable;
- /**
- * A token.
- */
- export interface IToken {
- startIndex: number;
- scopes: string;
- }
- /**
- * The result of a line tokenization.
- */
- export interface ILineTokens {
- /**
- * The list of tokens on the line.
- */
- tokens: IToken[];
- /**
- * The tokenization end state.
- * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.
- */
- endState: IState;
- }
- /**
- * The result of a line tokenization.
- */
- export interface IEncodedLineTokens {
- /**
- * The tokens on the line in a binary, encoded format. Each token occupies two array indices. For token i:
- * - at offset 2*i => startIndex
- * - at offset 2*i + 1 => metadata
- * Meta data is in binary format:
- * - -------------------------------------------
- * 3322 2222 2222 1111 1111 1100 0000 0000
- * 1098 7654 3210 9876 5432 1098 7654 3210
- * - -------------------------------------------
- * bbbb bbbb bfff ffff ffFF FFTT LLLL LLLL
- * - -------------------------------------------
- * - L = EncodedLanguageId (8 bits): Use `getEncodedLanguageId` to get the encoded ID of a language.
- * - T = StandardTokenType (2 bits): Other = 0, Comment = 1, String = 2, RegEx = 3.
- * - F = FontStyle (4 bits): None = 0, Italic = 1, Bold = 2, Underline = 4, Strikethrough = 8.
- * - f = foreground ColorId (9 bits)
- * - b = background ColorId (9 bits)
- * - The color value for each colorId is defined in IStandaloneThemeData.customTokenColors:
- * e.g. colorId = 1 is stored in IStandaloneThemeData.customTokenColors[1]. Color id = 0 means no color,
- * id = 1 is for the default foreground color, id = 2 for the default background.
- */
- tokens: Uint32Array;
- /**
- * The tokenization end state.
- * A pointer will be held to this and the object should not be modified by the tokenizer after the pointer is returned.
- */
- endState: IState;
- }
- /**
- * A factory for token providers.
- */
- export interface TokensProviderFactory {
- create(): ProviderResult<TokensProvider | EncodedTokensProvider | IMonarchLanguage>;
- }
- /**
- * A "manual" provider of tokens.
- */
- export interface TokensProvider {
- /**
- * The initial state of a language. Will be the state passed in to tokenize the first line.
- */
- getInitialState(): IState;
- /**
- * Tokenize a line given the state at the beginning of the line.
- */
- tokenize(line: string, state: IState): ILineTokens;
- }
- /**
- * A "manual" provider of tokens, returning tokens in a binary form.
- */
- export interface EncodedTokensProvider {
- /**
- * The initial state of a language. Will be the state passed in to tokenize the first line.
- */
- getInitialState(): IState;
- /**
- * Tokenize a line given the state at the beginning of the line.
- */
- tokenizeEncoded(line: string, state: IState): IEncodedLineTokens;
- /**
- * Tokenize a line given the state at the beginning of the line.
- */
- tokenize?(line: string, state: IState): ILineTokens;
- }
- /**
- * Change the color map that is used for token colors.
- * Supported formats (hex): #RRGGBB, $RRGGBBAA, #RGB, #RGBA
- */
- export function setColorMap(colorMap: string[] | null): void;
- /**
- * Register a tokens provider factory for a language. This tokenizer will be exclusive with a tokenizer
- * set using `setTokensProvider` or one created using `setMonarchTokensProvider`, but will work together
- * with a tokens provider set using `registerDocumentSemanticTokensProvider` or `registerDocumentRangeSemanticTokensProvider`.
- */
- export function registerTokensProviderFactory(languageId: string, factory: TokensProviderFactory): IDisposable;
- /**
- * Set the tokens provider for a language (manual implementation). This tokenizer will be exclusive
- * with a tokenizer created using `setMonarchTokensProvider`, or with `registerTokensProviderFactory`,
- * but will work together with a tokens provider set using `registerDocumentSemanticTokensProvider`
- * or `registerDocumentRangeSemanticTokensProvider`.
- */
- export function setTokensProvider(languageId: string, provider: TokensProvider | EncodedTokensProvider | Thenable<TokensProvider | EncodedTokensProvider>): IDisposable;
- /**
- * Set the tokens provider for a language (monarch implementation). This tokenizer will be exclusive
- * with a tokenizer set using `setTokensProvider`, or with `registerTokensProviderFactory`, but will
- * work together with a tokens provider set using `registerDocumentSemanticTokensProvider` or
- * `registerDocumentRangeSemanticTokensProvider`.
- */
- export function setMonarchTokensProvider(languageId: string, languageDef: IMonarchLanguage | Thenable<IMonarchLanguage>): IDisposable;
- /**
- * Register a reference provider (used by e.g. reference search).
- */
- export function registerReferenceProvider(languageSelector: LanguageSelector, provider: ReferenceProvider): IDisposable;
- /**
- * Register a rename provider (used by e.g. rename symbol).
- */
- export function registerRenameProvider(languageSelector: LanguageSelector, provider: RenameProvider): IDisposable;
- /**
- * Register a signature help provider (used by e.g. parameter hints).
- */
- export function registerSignatureHelpProvider(languageSelector: LanguageSelector, provider: SignatureHelpProvider): IDisposable;
- /**
- * Register a hover provider (used by e.g. editor hover).
- */
- export function registerHoverProvider(languageSelector: LanguageSelector, provider: HoverProvider): IDisposable;
- /**
- * Register a document symbol provider (used by e.g. outline).
- */
- export function registerDocumentSymbolProvider(languageSelector: LanguageSelector, provider: DocumentSymbolProvider): IDisposable;
- /**
- * Register a document highlight provider (used by e.g. highlight occurrences).
- */
- export function registerDocumentHighlightProvider(languageSelector: LanguageSelector, provider: DocumentHighlightProvider): IDisposable;
- /**
- * Register an linked editing range provider.
- */
- export function registerLinkedEditingRangeProvider(languageSelector: LanguageSelector, provider: LinkedEditingRangeProvider): IDisposable;
- /**
- * Register a definition provider (used by e.g. go to definition).
- */
- export function registerDefinitionProvider(languageSelector: LanguageSelector, provider: DefinitionProvider): IDisposable;
- /**
- * Register a implementation provider (used by e.g. go to implementation).
- */
- export function registerImplementationProvider(languageSelector: LanguageSelector, provider: ImplementationProvider): IDisposable;
- /**
- * Register a type definition provider (used by e.g. go to type definition).
- */
- export function registerTypeDefinitionProvider(languageSelector: LanguageSelector, provider: TypeDefinitionProvider): IDisposable;
- /**
- * Register a code lens provider (used by e.g. inline code lenses).
- */
- export function registerCodeLensProvider(languageSelector: LanguageSelector, provider: CodeLensProvider): IDisposable;
- /**
- * Register a code action provider (used by e.g. quick fix).
- */
- export function registerCodeActionProvider(languageSelector: LanguageSelector, provider: CodeActionProvider, metadata?: CodeActionProviderMetadata): IDisposable;
- /**
- * Register a formatter that can handle only entire models.
- */
- export function registerDocumentFormattingEditProvider(languageSelector: LanguageSelector, provider: DocumentFormattingEditProvider): IDisposable;
- /**
- * Register a formatter that can handle a range inside a model.
- */
- export function registerDocumentRangeFormattingEditProvider(languageSelector: LanguageSelector, provider: DocumentRangeFormattingEditProvider): IDisposable;
- /**
- * Register a formatter than can do formatting as the user types.
- */
- export function registerOnTypeFormattingEditProvider(languageSelector: LanguageSelector, provider: OnTypeFormattingEditProvider): IDisposable;
- /**
- * Register a link provider that can find links in text.
- */
- export function registerLinkProvider(languageSelector: LanguageSelector, provider: LinkProvider): IDisposable;
- /**
- * Register a completion item provider (use by e.g. suggestions).
- */
- export function registerCompletionItemProvider(languageSelector: LanguageSelector, provider: CompletionItemProvider): IDisposable;
- /**
- * Register a document color provider (used by Color Picker, Color Decorator).
- */
- export function registerColorProvider(languageSelector: LanguageSelector, provider: DocumentColorProvider): IDisposable;
- /**
- * Register a folding range provider
- */
- export function registerFoldingRangeProvider(languageSelector: LanguageSelector, provider: FoldingRangeProvider): IDisposable;
- /**
- * Register a declaration provider
- */
- export function registerDeclarationProvider(languageSelector: LanguageSelector, provider: DeclarationProvider): IDisposable;
- /**
- * Register a selection range provider
- */
- export function registerSelectionRangeProvider(languageSelector: LanguageSelector, provider: SelectionRangeProvider): IDisposable;
- /**
- * Register a document semantic tokens provider. A semantic tokens provider will complement and enhance a
- * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`
- * or `setTokensProvider`.
- *
- * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.
- */
- export function registerDocumentSemanticTokensProvider(languageSelector: LanguageSelector, provider: DocumentSemanticTokensProvider): IDisposable;
- /**
- * Register a document range semantic tokens provider. A semantic tokens provider will complement and enhance a
- * simple top-down tokenizer. Simple top-down tokenizers can be set either via `setMonarchTokensProvider`
- * or `setTokensProvider`.
- *
- * For the best user experience, register both a semantic tokens provider and a top-down tokenizer.
- */
- export function registerDocumentRangeSemanticTokensProvider(languageSelector: LanguageSelector, provider: DocumentRangeSemanticTokensProvider): IDisposable;
- /**
- * Register an inline completions provider.
- */
- export function registerInlineCompletionsProvider(languageSelector: LanguageSelector, provider: InlineCompletionsProvider): IDisposable;
- /**
- * Register an inlay hints provider.
- */
- export function registerInlayHintsProvider(languageSelector: LanguageSelector, provider: InlayHintsProvider): IDisposable;
- /**
- * Contains additional diagnostic information about the context in which
- * a [code action](#CodeActionProvider.provideCodeActions) is run.
- */
- export interface CodeActionContext {
- /**
- * An array of diagnostics.
- */
- readonly markers: editor.IMarkerData[];
- /**
- * Requested kind of actions to return.
- */
- readonly only?: string;
- /**
- * The reason why code actions were requested.
- */
- readonly trigger: CodeActionTriggerType;
- }
- /**
- * The code action interface defines the contract between extensions and
- * the [light bulb](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) feature.
- */
- export interface CodeActionProvider {
- /**
- * Provide commands for the given document and range.
- */
- provideCodeActions(model: editor.ITextModel, range: Range, context: CodeActionContext, token: CancellationToken): ProviderResult<CodeActionList>;
- /**
- * Given a code action fill in the edit. Will only invoked when missing.
- */
- resolveCodeAction?(codeAction: CodeAction, token: CancellationToken): ProviderResult<CodeAction>;
- }
- /**
- * Metadata about the type of code actions that a {@link CodeActionProvider} provides.
- */
- export interface CodeActionProviderMetadata {
- /**
- * List of code action kinds that a {@link CodeActionProvider} may return.
- *
- * This list is used to determine if a given `CodeActionProvider` should be invoked or not.
- * To avoid unnecessary computation, every `CodeActionProvider` should list use `providedCodeActionKinds`. The
- * list of kinds may either be generic, such as `["quickfix", "refactor", "source"]`, or list out every kind provided,
- * such as `["quickfix.removeLine", "source.fixAll" ...]`.
- */
- readonly providedCodeActionKinds?: readonly string[];
- readonly documentation?: ReadonlyArray<{
- readonly kind: string;
- readonly command: Command;
- }>;
- }
- /**
- * Describes how comments for a language work.
- */
- export interface CommentRule {
- /**
- * The line comment token, like `// this is a comment`
- */
- lineComment?: string | null;
- /**
- * The block comment character pair, like `/* block comment */`
- */
- blockComment?: CharacterPair | null;
- }
- /**
- * The language configuration interface defines the contract between extensions and
- * various editor features, like automatic bracket insertion, automatic indentation etc.
- */
- export interface LanguageConfiguration {
- /**
- * The language's comment settings.
- */
- comments?: CommentRule;
- /**
- * The language's brackets.
- * This configuration implicitly affects pressing Enter around these brackets.
- */
- brackets?: CharacterPair[];
- /**
- * The language's word definition.
- * If the language supports Unicode identifiers (e.g. JavaScript), it is preferable
- * to provide a word definition that uses exclusion of known separators.
- * e.g.: A regex that matches anything except known separators (and dot is allowed to occur in a floating point number):
- * /(-?\d*\.\d\w*)|([^\`\~\!\@\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\?\s]+)/g
- */
- wordPattern?: RegExp;
- /**
- * The language's indentation settings.
- */
- indentationRules?: IndentationRule;
- /**
- * The language's rules to be evaluated when pressing Enter.
- */
- onEnterRules?: OnEnterRule[];
- /**
- * The language's auto closing pairs. The 'close' character is automatically inserted with the
- * 'open' character is typed. If not set, the configured brackets will be used.
- */
- autoClosingPairs?: IAutoClosingPairConditional[];
- /**
- * The language's surrounding pairs. When the 'open' character is typed on a selection, the
- * selected string is surrounded by the open and close characters. If not set, the autoclosing pairs
- * settings will be used.
- */
- surroundingPairs?: IAutoClosingPair[];
- /**
- * Defines a list of bracket pairs that are colorized depending on their nesting level.
- * If not set, the configured brackets will be used.
- */
- colorizedBracketPairs?: CharacterPair[];
- /**
- * Defines what characters must be after the cursor for bracket or quote autoclosing to occur when using the \'languageDefined\' autoclosing setting.
- *
- * This is typically the set of characters which can not start an expression, such as whitespace, closing brackets, non-unary operators, etc.
- */
- autoCloseBefore?: string;
- /**
- * The language's folding rules.
- */
- folding?: FoldingRules;
- /**
- * **Deprecated** Do not use.
- *
- * @deprecated Will be replaced by a better API soon.
- */
- __electricCharacterSupport?: {
- docComment?: IDocComment;
- };
- }
- /**
- * Describes indentation rules for a language.
- */
- export interface IndentationRule {
- /**
- * If a line matches this pattern, then all the lines after it should be unindented once (until another rule matches).
- */
- decreaseIndentPattern: RegExp;
- /**
- * If a line matches this pattern, then all the lines after it should be indented once (until another rule matches).
- */
- increaseIndentPattern: RegExp;
- /**
- * If a line matches this pattern, then **only the next line** after it should be indented once.
- */
- indentNextLinePattern?: RegExp | null;
- /**
- * If a line matches this pattern, then its indentation should not be changed and it should not be evaluated against the other rules.
- */
- unIndentedLinePattern?: RegExp | null;
- }
- /**
- * Describes language specific folding markers such as '#region' and '#endregion'.
- * The start and end regexes will be tested against the contents of all lines and must be designed efficiently:
- * - the regex should start with '^'
- * - regexp flags (i, g) are ignored
- */
- export interface FoldingMarkers {
- start: RegExp;
- end: RegExp;
- }
- /**
- * Describes folding rules for a language.
- */
- export interface FoldingRules {
- /**
- * Used by the indentation based strategy to decide whether empty lines belong to the previous or the next block.
- * A language adheres to the off-side rule if blocks in that language are expressed by their indentation.
- * See [wikipedia](https://en.wikipedia.org/wiki/Off-side_rule) for more information.
- * If not set, `false` is used and empty lines belong to the previous block.
- */
- offSide?: boolean;
- /**
- * Region markers used by the language.
- */
- markers?: FoldingMarkers;
- }
- /**
- * Describes a rule to be evaluated when pressing Enter.
- */
- export interface OnEnterRule {
- /**
- * This rule will only execute if the text before the cursor matches this regular expression.
- */
- beforeText: RegExp;
- /**
- * This rule will only execute if the text after the cursor matches this regular expression.
- */
- afterText?: RegExp;
- /**
- * This rule will only execute if the text above the this line matches this regular expression.
- */
- previousLineText?: RegExp;
- /**
- * The action to execute.
- */
- action: EnterAction;
- }
- /**
- * Definition of documentation comments (e.g. Javadoc/JSdoc)
- */
- export interface IDocComment {
- /**
- * The string that starts a doc comment (e.g. '/**')
- */
- open: string;
- /**
- * The string that appears on the last line and closes the doc comment (e.g. ' * /').
- */
- close?: string;
- }
- /**
- * A tuple of two characters, like a pair of
- * opening and closing brackets.
- */
- export type CharacterPair = [string, string];
- export interface IAutoClosingPair {
- open: string;
- close: string;
- }
- export interface IAutoClosingPairConditional extends IAutoClosingPair {
- notIn?: string[];
- }
- /**
- * Describes what to do with the indentation when pressing Enter.
- */
- export enum IndentAction {
- /**
- * Insert new line and copy the previous line's indentation.
- */
- None = 0,
- /**
- * Insert new line and indent once (relative to the previous line's indentation).
- */
- Indent = 1,
- /**
- * Insert two new lines:
- * - the first one indented which will hold the cursor
- * - the second one at the same indentation level
- */
- IndentOutdent = 2,
- /**
- * Insert new line and outdent once (relative to the previous line's indentation).
- */
- Outdent = 3
- }
- /**
- * Describes what to do when pressing Enter.
- */
- export interface EnterAction {
- /**
- * Describe what to do with the indentation.
- */
- indentAction: IndentAction;
- /**
- * Describes text to be appended after the new line and after the indentation.
- */
- appendText?: string;
- /**
- * Describes the number of characters to remove from the new line's indentation.
- */
- removeText?: number;
- }
- /**
- * The state of the tokenizer between two lines.
- * It is useful to store flags such as in multiline comment, etc.
- * The model will clone the previous line's state and pass it in to tokenize the next line.
- */
- export interface IState {
- clone(): IState;
- equals(other: IState): boolean;
- }
- /**
- * A provider result represents the values a provider, like the {@link HoverProvider},
- * may return. For once this is the actual result type `T`, like `Hover`, or a thenable that resolves
- * to that type `T`. In addition, `null` and `undefined` can be returned - either directly or from a
- * thenable.
- */
- export type ProviderResult<T> = T | undefined | null | Thenable<T | undefined | null>;
- /**
- * A hover represents additional information for a symbol or word. Hovers are
- * rendered in a tooltip-like widget.
- */
- export interface Hover {
- /**
- * The contents of this hover.
- */
- contents: IMarkdownString[];
- /**
- * The range to which this hover applies. When missing, the
- * editor will use the range at the current position or the
- * current position itself.
- */
- range?: IRange;
- }
- /**
- * The hover provider interface defines the contract between extensions and
- * the [hover](https://code.visualstudio.com/docs/editor/intellisense)-feature.
- */
- export interface HoverProvider {
- /**
- * Provide a hover for the given position and document. Multiple hovers at the same
- * position will be merged by the editor. A hover can have a range which defaults
- * to the word range at the position when omitted.
- */
- provideHover(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Hover>;
- }
- export enum CompletionItemKind {
- Method = 0,
- Function = 1,
- Constructor = 2,
- Field = 3,
- Variable = 4,
- Class = 5,
- Struct = 6,
- Interface = 7,
- Module = 8,
- Property = 9,
- Event = 10,
- Operator = 11,
- Unit = 12,
- Value = 13,
- Constant = 14,
- Enum = 15,
- EnumMember = 16,
- Keyword = 17,
- Text = 18,
- Color = 19,
- File = 20,
- Reference = 21,
- Customcolor = 22,
- Folder = 23,
- TypeParameter = 24,
- User = 25,
- Issue = 26,
- Snippet = 27
- }
- export interface CompletionItemLabel {
- label: string;
- detail?: string;
- description?: string;
- }
- export enum CompletionItemTag {
- Deprecated = 1
- }
- export enum CompletionItemInsertTextRule {
- None = 0,
- /**
- * Adjust whitespace/indentation of multiline insert texts to
- * match the current line indentation.
- */
- KeepWhitespace = 1,
- /**
- * `insertText` is a snippet.
- */
- InsertAsSnippet = 4
- }
- export interface CompletionItemRanges {
- insert: IRange;
- replace: IRange;
- }
- /**
- * A completion item represents a text snippet that is
- * proposed to complete text that is being typed.
- */
- export interface CompletionItem {
- /**
- * The label of this completion item. By default
- * this is also the text that is inserted when selecting
- * this completion.
- */
- label: string | CompletionItemLabel;
- /**
- * The kind of this completion item. Based on the kind
- * an icon is chosen by the editor.
- */
- kind: CompletionItemKind;
- /**
- * A modifier to the `kind` which affect how the item
- * is rendered, e.g. Deprecated is rendered with a strikeout
- */
- tags?: ReadonlyArray<CompletionItemTag>;
- /**
- * A human-readable string with additional information
- * about this item, like type or symbol information.
- */
- detail?: string;
- /**
- * A human-readable string that represents a doc-comment.
- */
- documentation?: string | IMarkdownString;
- /**
- * A string that should be used when comparing this item
- * with other items. When `falsy` the {@link CompletionItem.label label}
- * is used.
- */
- sortText?: string;
- /**
- * A string that should be used when filtering a set of
- * completion items. When `falsy` the {@link CompletionItem.label label}
- * is used.
- */
- filterText?: string;
- /**
- * Select this item when showing. *Note* that only one completion item can be selected and
- * that the editor decides which item that is. The rule is that the *first* item of those
- * that match best is selected.
- */
- preselect?: boolean;
- /**
- * A string or snippet that should be inserted in a document when selecting
- * this completion.
- */
- insertText: string;
- /**
- * Additional rules (as bitmask) that should be applied when inserting
- * this completion.
- */
- insertTextRules?: CompletionItemInsertTextRule;
- /**
- * A range of text that should be replaced by this completion item.
- *
- * Defaults to a range from the start of the {@link TextDocument.getWordRangeAtPosition current word} to the
- * current position.
- *
- * *Note:* The range must be a {@link Range.isSingleLine single line} and it must
- * {@link Range.contains contain} the position at which completion has been {@link CompletionItemProvider.provideCompletionItems requested}.
- */
- range: IRange | CompletionItemRanges;
- /**
- * An optional set of characters that when pressed while this completion is active will accept it first and
- * then type that character. *Note* that all commit characters should have `length=1` and that superfluous
- * characters will be ignored.
- */
- commitCharacters?: string[];
- /**
- * An optional array of additional text edits that are applied when
- * selecting this completion. Edits must not overlap with the main edit
- * nor with themselves.
- */
- additionalTextEdits?: editor.ISingleEditOperation[];
- /**
- * A command that should be run upon acceptance of this item.
- */
- command?: Command;
- }
- export interface CompletionList {
- suggestions: CompletionItem[];
- incomplete?: boolean;
- dispose?(): void;
- }
- /**
- * How a suggest provider was triggered.
- */
- export enum CompletionTriggerKind {
- Invoke = 0,
- TriggerCharacter = 1,
- TriggerForIncompleteCompletions = 2
- }
- /**
- * Contains additional information about the context in which
- * {@link CompletionItemProvider.provideCompletionItems completion provider} is triggered.
- */
- export interface CompletionContext {
- /**
- * How the completion was triggered.
- */
- triggerKind: CompletionTriggerKind;
- /**
- * Character that triggered the completion item provider.
- *
- * `undefined` if provider was not triggered by a character.
- */
- triggerCharacter?: string;
- }
- /**
- * The completion item provider interface defines the contract between extensions and
- * the [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense).
- *
- * When computing *complete* completion items is expensive, providers can optionally implement
- * the `resolveCompletionItem`-function. In that case it is enough to return completion
- * items with a {@link CompletionItem.label label} from the
- * {@link CompletionItemProvider.provideCompletionItems provideCompletionItems}-function. Subsequently,
- * when a completion item is shown in the UI and gains focus this provider is asked to resolve
- * the item, like adding {@link CompletionItem.documentation doc-comment} or {@link CompletionItem.detail details}.
- */
- export interface CompletionItemProvider {
- triggerCharacters?: string[];
- /**
- * Provide completion items for the given position and document.
- */
- provideCompletionItems(model: editor.ITextModel, position: Position, context: CompletionContext, token: CancellationToken): ProviderResult<CompletionList>;
- /**
- * Given a completion item fill in more data, like {@link CompletionItem.documentation doc-comment}
- * or {@link CompletionItem.detail details}.
- *
- * The editor will only resolve a completion item once.
- */
- resolveCompletionItem?(item: CompletionItem, token: CancellationToken): ProviderResult<CompletionItem>;
- }
- /**
- * How an {@link InlineCompletionsProvider inline completion provider} was triggered.
- */
- export enum InlineCompletionTriggerKind {
- /**
- * Completion was triggered automatically while editing.
- * It is sufficient to return a single completion item in this case.
- */
- Automatic = 0,
- /**
- * Completion was triggered explicitly by a user gesture.
- * Return multiple completion items to enable cycling through them.
- */
- Explicit = 1
- }
- export interface InlineCompletionContext {
- /**
- * How the completion was triggered.
- */
- readonly triggerKind: InlineCompletionTriggerKind;
- readonly selectedSuggestionInfo: SelectedSuggestionInfo | undefined;
- }
- export class SelectedSuggestionInfo {
- readonly range: IRange;
- readonly text: string;
- readonly completionKind: CompletionItemKind;
- readonly isSnippetText: boolean;
- constructor(range: IRange, text: string, completionKind: CompletionItemKind, isSnippetText: boolean);
- equals(other: SelectedSuggestionInfo): boolean;
- }
- export interface InlineCompletion {
- /**
- * The text to insert.
- * If the text contains a line break, the range must end at the end of a line.
- * If existing text should be replaced, the existing text must be a prefix of the text to insert.
- *
- * The text can also be a snippet. In that case, a preview with default parameters is shown.
- * When accepting the suggestion, the full snippet is inserted.
- */
- readonly insertText: string | {
- snippet: string;
- };
- /**
- * A text that is used to decide if this inline completion should be shown.
- * An inline completion is shown if the text to replace is a subword of the filter text.
- */
- readonly filterText?: string;
- /**
- * An optional array of additional text edits that are applied when
- * selecting this completion. Edits must not overlap with the main edit
- * nor with themselves.
- */
- readonly additionalTextEdits?: editor.ISingleEditOperation[];
- /**
- * The range to replace.
- * Must begin and end on the same line.
- */
- readonly range?: IRange;
- readonly command?: Command;
- /**
- * If set to `true`, unopened closing brackets are removed and unclosed opening brackets are closed.
- * Defaults to `false`.
- */
- readonly completeBracketPairs?: boolean;
- }
- export interface InlineCompletions<TItem extends InlineCompletion = InlineCompletion> {
- readonly items: readonly TItem[];
- /**
- * A list of commands associated with the inline completions of this list.
- */
- readonly commands?: Command[];
- readonly suppressSuggestions?: boolean | undefined;
- /**
- * When set and the user types a suggestion without derivating from it, the inline suggestion is not updated.
- */
- readonly enableForwardStability?: boolean | undefined;
- }
- export interface InlineCompletionsProvider<T extends InlineCompletions = InlineCompletions> {
- provideInlineCompletions(model: editor.ITextModel, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<T>;
- /**
- * Will be called when an item is shown.
- * @param updatedInsertText Is useful to understand bracket completion.
- */
- handleItemDidShow?(completions: T, item: T['items'][number], updatedInsertText: string): void;
- /**
- * Will be called when an item is partially accepted.
- */
- handlePartialAccept?(completions: T, item: T['items'][number], acceptedCharacters: number): void;
- /**
- * Will be called when a completions list is no longer in use and can be garbage-collected.
- */
- freeInlineCompletions(completions: T): void;
- }
- export interface CodeAction {
- title: string;
- command?: Command;
- edit?: WorkspaceEdit;
- diagnostics?: editor.IMarkerData[];
- kind?: string;
- isPreferred?: boolean;
- disabled?: string;
- }
- export enum CodeActionTriggerType {
- Invoke = 1,
- Auto = 2
- }
- export interface CodeActionList extends IDisposable {
- readonly actions: ReadonlyArray<CodeAction>;
- }
- /**
- * Represents a parameter of a callable-signature. A parameter can
- * have a label and a doc-comment.
- */
- export interface ParameterInformation {
- /**
- * The label of this signature. Will be shown in
- * the UI.
- */
- label: string | [number, number];
- /**
- * The human-readable doc-comment of this signature. Will be shown
- * in the UI but can be omitted.
- */
- documentation?: string | IMarkdownString;
- }
- /**
- * Represents the signature of something callable. A signature
- * can have a label, like a function-name, a doc-comment, and
- * a set of parameters.
- */
- export interface SignatureInformation {
- /**
- * The label of this signature. Will be shown in
- * the UI.
- */
- label: string;
- /**
- * The human-readable doc-comment of this signature. Will be shown
- * in the UI but can be omitted.
- */
- documentation?: string | IMarkdownString;
- /**
- * The parameters of this signature.
- */
- parameters: ParameterInformation[];
- /**
- * Index of the active parameter.
- *
- * If provided, this is used in place of `SignatureHelp.activeSignature`.
- */
- activeParameter?: number;
- }
- /**
- * Signature help represents the signature of something
- * callable. There can be multiple signatures but only one
- * active and only one active parameter.
- */
- export interface SignatureHelp {
- /**
- * One or more signatures.
- */
- signatures: SignatureInformation[];
- /**
- * The active signature.
- */
- activeSignature: number;
- /**
- * The active parameter of the active signature.
- */
- activeParameter: number;
- }
- export interface SignatureHelpResult extends IDisposable {
- value: SignatureHelp;
- }
- export enum SignatureHelpTriggerKind {
- Invoke = 1,
- TriggerCharacter = 2,
- ContentChange = 3
- }
- export interface SignatureHelpContext {
- readonly triggerKind: SignatureHelpTriggerKind;
- readonly triggerCharacter?: string;
- readonly isRetrigger: boolean;
- readonly activeSignatureHelp?: SignatureHelp;
- }
- /**
- * The signature help provider interface defines the contract between extensions and
- * the [parameter hints](https://code.visualstudio.com/docs/editor/intellisense)-feature.
- */
- export interface SignatureHelpProvider {
- readonly signatureHelpTriggerCharacters?: ReadonlyArray<string>;
- readonly signatureHelpRetriggerCharacters?: ReadonlyArray<string>;
- /**
- * Provide help for the signature at the given position and document.
- */
- provideSignatureHelp(model: editor.ITextModel, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelpResult>;
- }
- /**
- * A document highlight kind.
- */
- export enum DocumentHighlightKind {
- /**
- * A textual occurrence.
- */
- Text = 0,
- /**
- * Read-access of a symbol, like reading a variable.
- */
- Read = 1,
- /**
- * Write-access of a symbol, like writing to a variable.
- */
- Write = 2
- }
- /**
- * A document highlight is a range inside a text document which deserves
- * special attention. Usually a document highlight is visualized by changing
- * the background color of its range.
- */
- export interface DocumentHighlight {
- /**
- * The range this highlight applies to.
- */
- range: IRange;
- /**
- * The highlight kind, default is {@link DocumentHighlightKind.Text text}.
- */
- kind?: DocumentHighlightKind;
- }
- /**
- * The document highlight provider interface defines the contract between extensions and
- * the word-highlight-feature.
- */
- export interface DocumentHighlightProvider {
- /**
- * Provide a set of document highlights, like all occurrences of a variable or
- * all exit-points of a function.
- */
- provideDocumentHighlights(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<DocumentHighlight[]>;
- }
- /**
- * The linked editing range provider interface defines the contract between extensions and
- * the linked editing feature.
- */
- export interface LinkedEditingRangeProvider {
- /**
- * Provide a list of ranges that can be edited together.
- */
- provideLinkedEditingRanges(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<LinkedEditingRanges>;
- }
- /**
- * Represents a list of ranges that can be edited together along with a word pattern to describe valid contents.
- */
- export interface LinkedEditingRanges {
- /**
- * A list of ranges that can be edited together. The ranges must have
- * identical length and text content. The ranges cannot overlap
- */
- ranges: IRange[];
- /**
- * An optional word pattern that describes valid contents for the given ranges.
- * If no pattern is provided, the language configuration's word pattern will be used.
- */
- wordPattern?: RegExp;
- }
- /**
- * Value-object that contains additional information when
- * requesting references.
- */
- export interface ReferenceContext {
- /**
- * Include the declaration of the current symbol.
- */
- includeDeclaration: boolean;
- }
- /**
- * The reference provider interface defines the contract between extensions and
- * the [find references](https://code.visualstudio.com/docs/editor/editingevolved#_peek)-feature.
- */
- export interface ReferenceProvider {
- /**
- * Provide a set of project-wide references for the given position and document.
- */
- provideReferences(model: editor.ITextModel, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>;
- }
- /**
- * Represents a location inside a resource, such as a line
- * inside a text file.
- */
- export interface Location {
- /**
- * The resource identifier of this location.
- */
- uri: Uri;
- /**
- * The document range of this locations.
- */
- range: IRange;
- }
- export interface LocationLink {
- /**
- * A range to select where this link originates from.
- */
- originSelectionRange?: IRange;
- /**
- * The target uri this link points to.
- */
- uri: Uri;
- /**
- * The full range this link points to.
- */
- range: IRange;
- /**
- * A range to select this link points to. Must be contained
- * in `LocationLink.range`.
- */
- targetSelectionRange?: IRange;
- }
- export type Definition = Location | Location[] | LocationLink[];
- /**
- * The definition provider interface defines the contract between extensions and
- * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
- * and peek definition features.
- */
- export interface DefinitionProvider {
- /**
- * Provide the definition of the symbol at the given position and document.
- */
- provideDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
- }
- /**
- * The definition provider interface defines the contract between extensions and
- * the [go to definition](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-definition)
- * and peek definition features.
- */
- export interface DeclarationProvider {
- /**
- * Provide the declaration of the symbol at the given position and document.
- */
- provideDeclaration(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
- }
- /**
- * The implementation provider interface defines the contract between extensions and
- * the go to implementation feature.
- */
- export interface ImplementationProvider {
- /**
- * Provide the implementation of the symbol at the given position and document.
- */
- provideImplementation(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
- }
- /**
- * The type definition provider interface defines the contract between extensions and
- * the go to type definition feature.
- */
- export interface TypeDefinitionProvider {
- /**
- * Provide the type definition of the symbol at the given position and document.
- */
- provideTypeDefinition(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>;
- }
- /**
- * A symbol kind.
- */
- export enum SymbolKind {
- File = 0,
- Module = 1,
- Namespace = 2,
- Package = 3,
- Class = 4,
- Method = 5,
- Property = 6,
- Field = 7,
- Constructor = 8,
- Enum = 9,
- Interface = 10,
- Function = 11,
- Variable = 12,
- Constant = 13,
- String = 14,
- Number = 15,
- Boolean = 16,
- Array = 17,
- Object = 18,
- Key = 19,
- Null = 20,
- EnumMember = 21,
- Struct = 22,
- Event = 23,
- Operator = 24,
- TypeParameter = 25
- }
- export enum SymbolTag {
- Deprecated = 1
- }
- export interface DocumentSymbol {
- name: string;
- detail: string;
- kind: SymbolKind;
- tags: ReadonlyArray<SymbolTag>;
- containerName?: string;
- range: IRange;
- selectionRange: IRange;
- children?: DocumentSymbol[];
- }
- /**
- * The document symbol provider interface defines the contract between extensions and
- * the [go to symbol](https://code.visualstudio.com/docs/editor/editingevolved#_go-to-symbol)-feature.
- */
- export interface DocumentSymbolProvider {
- displayName?: string;
- /**
- * Provide symbol information for the given document.
- */
- provideDocumentSymbols(model: editor.ITextModel, token: CancellationToken): ProviderResult<DocumentSymbol[]>;
- }
- export interface TextEdit {
- range: IRange;
- text: string;
- eol?: editor.EndOfLineSequence;
- }
- /**
- * Interface used to format a model
- */
- export interface FormattingOptions {
- /**
- * Size of a tab in spaces.
- */
- tabSize: number;
- /**
- * Prefer spaces over tabs.
- */
- insertSpaces: boolean;
- /**
- * The list of multiple ranges to format at once, if the provider supports it.
- */
- ranges?: Range[];
- }
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface DocumentFormattingEditProvider {
- readonly displayName?: string;
- /**
- * Provide formatting edits for a whole document.
- */
- provideDocumentFormattingEdits(model: editor.ITextModel, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
- }
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface DocumentRangeFormattingEditProvider {
- readonly displayName?: string;
- /**
- * Provide formatting edits for a range in a document.
- *
- * The given range is a hint and providers can decide to format a smaller
- * or larger range. Often this is done by adjusting the start and end
- * of the range to full syntax nodes.
- */
- provideDocumentRangeFormattingEdits(model: editor.ITextModel, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
- provideDocumentRangesFormattingEdits?(model: editor.ITextModel, ranges: Range[], options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
- }
- /**
- * The document formatting provider interface defines the contract between extensions and
- * the formatting-feature.
- */
- export interface OnTypeFormattingEditProvider {
- autoFormatTriggerCharacters: string[];
- /**
- * Provide formatting edits after a character has been typed.
- *
- * The given position and character should hint to the provider
- * what range the position to expand to, like find the matching `{`
- * when `}` has been entered.
- */
- provideOnTypeFormattingEdits(model: editor.ITextModel, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>;
- }
- /**
- * A link inside the editor.
- */
- export interface ILink {
- range: IRange;
- url?: Uri | string;
- tooltip?: string;
- }
- export interface ILinksList {
- links: ILink[];
- dispose?(): void;
- }
- /**
- * A provider of links.
- */
- export interface LinkProvider {
- provideLinks(model: editor.ITextModel, token: CancellationToken): ProviderResult<ILinksList>;
- resolveLink?: (link: ILink, token: CancellationToken) => ProviderResult<ILink>;
- }
- /**
- * A color in RGBA format.
- */
- export interface IColor {
- /**
- * The red component in the range [0-1].
- */
- readonly red: number;
- /**
- * The green component in the range [0-1].
- */
- readonly green: number;
- /**
- * The blue component in the range [0-1].
- */
- readonly blue: number;
- /**
- * The alpha component in the range [0-1].
- */
- readonly alpha: number;
- }
- /**
- * String representations for a color
- */
- export interface IColorPresentation {
- /**
- * The label of this color presentation. It will be shown on the color
- * picker header. By default this is also the text that is inserted when selecting
- * this color presentation.
- */
- label: string;
- /**
- * An {@link TextEdit edit} which is applied to a document when selecting
- * this presentation for the color.
- */
- textEdit?: TextEdit;
- /**
- * An optional array of additional {@link TextEdit text edits} that are applied when
- * selecting this color presentation.
- */
- additionalTextEdits?: TextEdit[];
- }
- /**
- * A color range is a range in a text model which represents a color.
- */
- export interface IColorInformation {
- /**
- * The range within the model.
- */
- range: IRange;
- /**
- * The color represented in this range.
- */
- color: IColor;
- }
- /**
- * A provider of colors for editor models.
- */
- export interface DocumentColorProvider {
- /**
- * Provides the color ranges for a specific model.
- */
- provideDocumentColors(model: editor.ITextModel, token: CancellationToken): ProviderResult<IColorInformation[]>;
- /**
- * Provide the string representations for a color.
- */
- provideColorPresentations(model: editor.ITextModel, colorInfo: IColorInformation, token: CancellationToken): ProviderResult<IColorPresentation[]>;
- }
- export interface SelectionRange {
- range: IRange;
- }
- export interface SelectionRangeProvider {
- /**
- * Provide ranges that should be selected from the given position.
- */
- provideSelectionRanges(model: editor.ITextModel, positions: Position[], token: CancellationToken): ProviderResult<SelectionRange[][]>;
- }
- export interface FoldingContext {
- }
- /**
- * A provider of folding ranges for editor models.
- */
- export interface FoldingRangeProvider {
- /**
- * An optional event to signal that the folding ranges from this provider have changed.
- */
- onDidChange?: IEvent<this>;
- /**
- * Provides the folding ranges for a specific model.
- */
- provideFoldingRanges(model: editor.ITextModel, context: FoldingContext, token: CancellationToken): ProviderResult<FoldingRange[]>;
- }
- export interface FoldingRange {
- /**
- * The one-based start line of the range to fold. The folded area starts after the line's last character.
- */
- start: number;
- /**
- * The one-based end line of the range to fold. The folded area ends with the line's last character.
- */
- end: number;
- /**
- * Describes the {@link FoldingRangeKind Kind} of the folding range such as {@link FoldingRangeKind.Comment Comment} or
- * {@link FoldingRangeKind.Region Region}. The kind is used to categorize folding ranges and used by commands
- * like 'Fold all comments'. See
- * {@link FoldingRangeKind} for an enumeration of standardized kinds.
- */
- kind?: FoldingRangeKind;
- }
- export class FoldingRangeKind {
- value: string;
- /**
- * Kind for folding range representing a comment. The value of the kind is 'comment'.
- */
- static readonly Comment: FoldingRangeKind;
- /**
- * Kind for folding range representing a import. The value of the kind is 'imports'.
- */
- static readonly Imports: FoldingRangeKind;
- /**
- * Kind for folding range representing regions (for example marked by `#region`, `#endregion`).
- * The value of the kind is 'region'.
- */
- static readonly Region: FoldingRangeKind;
- /**
- * Returns a {@link FoldingRangeKind} for the given value.
- *
- * @param value of the kind.
- */
- static fromValue(value: string): FoldingRangeKind;
- /**
- * Creates a new {@link FoldingRangeKind}.
- *
- * @param value of the kind.
- */
- constructor(value: string);
- }
- export interface WorkspaceEditMetadata {
- needsConfirmation: boolean;
- label: string;
- description?: string;
- }
- export interface WorkspaceFileEditOptions {
- overwrite?: boolean;
- ignoreIfNotExists?: boolean;
- ignoreIfExists?: boolean;
- recursive?: boolean;
- copy?: boolean;
- folder?: boolean;
- skipTrashBin?: boolean;
- maxSize?: number;
- }
- export interface IWorkspaceFileEdit {
- oldResource?: Uri;
- newResource?: Uri;
- options?: WorkspaceFileEditOptions;
- metadata?: WorkspaceEditMetadata;
- }
- export interface IWorkspaceTextEdit {
- resource: Uri;
- textEdit: TextEdit & {
- insertAsSnippet?: boolean;
- };
- versionId: number | undefined;
- metadata?: WorkspaceEditMetadata;
- }
- export interface WorkspaceEdit {
- edits: Array<IWorkspaceTextEdit | IWorkspaceFileEdit>;
- }
- export interface Rejection {
- rejectReason?: string;
- }
- export interface RenameLocation {
- range: IRange;
- text: string;
- }
- export interface RenameProvider {
- provideRenameEdits(model: editor.ITextModel, position: Position, newName: string, token: CancellationToken): ProviderResult<WorkspaceEdit & Rejection>;
- resolveRenameLocation?(model: editor.ITextModel, position: Position, token: CancellationToken): ProviderResult<RenameLocation & Rejection>;
- }
- export interface Command {
- id: string;
- title: string;
- tooltip?: string;
- arguments?: any[];
- }
- export interface CodeLens {
- range: IRange;
- id?: string;
- command?: Command;
- }
- export interface CodeLensList {
- lenses: CodeLens[];
- dispose(): void;
- }
- export interface CodeLensProvider {
- onDidChange?: IEvent<this>;
- provideCodeLenses(model: editor.ITextModel, token: CancellationToken): ProviderResult<CodeLensList>;
- resolveCodeLens?(model: editor.ITextModel, codeLens: CodeLens, token: CancellationToken): ProviderResult<CodeLens>;
- }
- export enum InlayHintKind {
- Type = 1,
- Parameter = 2
- }
- export interface InlayHintLabelPart {
- label: string;
- tooltip?: string | IMarkdownString;
- command?: Command;
- location?: Location;
- }
- export interface InlayHint {
- label: string | InlayHintLabelPart[];
- tooltip?: string | IMarkdownString;
- textEdits?: TextEdit[];
- position: IPosition;
- kind?: InlayHintKind;
- paddingLeft?: boolean;
- paddingRight?: boolean;
- }
- export interface InlayHintList {
- hints: InlayHint[];
- dispose(): void;
- }
- export interface InlayHintsProvider {
- displayName?: string;
- onDidChangeInlayHints?: IEvent<void>;
- provideInlayHints(model: editor.ITextModel, range: Range, token: CancellationToken): ProviderResult<InlayHintList>;
- resolveInlayHint?(hint: InlayHint, token: CancellationToken): ProviderResult<InlayHint>;
- }
- export interface SemanticTokensLegend {
- readonly tokenTypes: string[];
- readonly tokenModifiers: string[];
- }
- export interface SemanticTokens {
- readonly resultId?: string;
- readonly data: Uint32Array;
- }
- export interface SemanticTokensEdit {
- readonly start: number;
- readonly deleteCount: number;
- readonly data?: Uint32Array;
- }
- export interface SemanticTokensEdits {
- readonly resultId?: string;
- readonly edits: SemanticTokensEdit[];
- }
- export interface DocumentSemanticTokensProvider {
- onDidChange?: IEvent<void>;
- getLegend(): SemanticTokensLegend;
- provideDocumentSemanticTokens(model: editor.ITextModel, lastResultId: string | null, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits>;
- releaseDocumentSemanticTokens(resultId: string | undefined): void;
- }
- export interface DocumentRangeSemanticTokensProvider {
- getLegend(): SemanticTokensLegend;
- provideDocumentRangeSemanticTokens(model: editor.ITextModel, range: Range, token: CancellationToken): ProviderResult<SemanticTokens>;
- }
- export interface ILanguageExtensionPoint {
- id: string;
- extensions?: string[];
- filenames?: string[];
- filenamePatterns?: string[];
- firstLine?: string;
- aliases?: string[];
- mimetypes?: string[];
- configuration?: Uri;
- }
- /**
- * A Monarch language definition
- */
- export interface IMonarchLanguage {
- /**
- * map from string to ILanguageRule[]
- */
- tokenizer: {
- [name: string]: IMonarchLanguageRule[];
- };
- /**
- * is the language case insensitive?
- */
- ignoreCase?: boolean;
- /**
- * is the language unicode-aware? (i.e., /\u{1D306}/)
- */
- unicode?: boolean;
- /**
- * if no match in the tokenizer assign this token class (default 'source')
- */
- defaultToken?: string;
- /**
- * for example [['{','}','delimiter.curly']]
- */
- brackets?: IMonarchLanguageBracket[];
- /**
- * start symbol in the tokenizer (by default the first entry is used)
- */
- start?: string;
- /**
- * attach this to every token class (by default '.' + name)
- */
- tokenPostfix?: string;
- /**
- * include line feeds (in the form of a \n character) at the end of lines
- * Defaults to false
- */
- includeLF?: boolean;
- /**
- * Other keys that can be referred to by the tokenizer.
- */
- [key: string]: any;
- }
- /**
- * A rule is either a regular expression and an action
- * shorthands: [reg,act] == { regex: reg, action: act}
- * and : [reg,act,nxt] == { regex: reg, action: act{ next: nxt }}
- */
- export type IShortMonarchLanguageRule1 = [string | RegExp, IMonarchLanguageAction];
- export type IShortMonarchLanguageRule2 = [string | RegExp, IMonarchLanguageAction, string];
- export interface IExpandedMonarchLanguageRule {
- /**
- * match tokens
- */
- regex?: string | RegExp;
- /**
- * action to take on match
- */
- action?: IMonarchLanguageAction;
- /**
- * or an include rule. include all rules from the included state
- */
- include?: string;
- }
- export type IMonarchLanguageRule = IShortMonarchLanguageRule1 | IShortMonarchLanguageRule2 | IExpandedMonarchLanguageRule;
- /**
- * An action is either an array of actions...
- * ... or a case statement with guards...
- * ... or a basic action with a token value.
- */
- export type IShortMonarchLanguageAction = string;
- export interface IExpandedMonarchLanguageAction {
- /**
- * array of actions for each parenthesized match group
- */
- group?: IMonarchLanguageAction[];
- /**
- * map from string to ILanguageAction
- */
- cases?: Object;
- /**
- * token class (ie. css class) (or "@brackets" or "@rematch")
- */
- token?: string;
- /**
- * the next state to push, or "@push", "@pop", "@popall"
- */
- next?: string;
- /**
- * switch to this state
- */
- switchTo?: string;
- /**
- * go back n characters in the stream
- */
- goBack?: number;
- /**
- * @open or @close
- */
- bracket?: string;
- /**
- * switch to embedded language (using the mimetype) or get out using "@pop"
- */
- nextEmbedded?: string;
- /**
- * log a message to the browser console window
- */
- log?: string;
- }
- export type IMonarchLanguageAction = IShortMonarchLanguageAction | IExpandedMonarchLanguageAction | (IShortMonarchLanguageAction | IExpandedMonarchLanguageAction)[];
- /**
- * This interface can be shortened as an array, ie. ['{','}','delimiter.curly']
- */
- export interface IMonarchLanguageBracket {
- /**
- * open bracket
- */
- open: string;
- /**
- * closing bracket
- */
- close: string;
- /**
- * token class
- */
- token: string;
- }
- }
- declare namespace monaco.worker {
- export interface IMirrorTextModel {
- readonly version: number;
- }
- export interface IMirrorModel extends IMirrorTextModel {
- readonly uri: Uri;
- readonly version: number;
- getValue(): string;
- }
- export interface IWorkerContext<H = undefined> {
- /**
- * A proxy to the main thread host object.
- */
- host: H;
- /**
- * Get all available mirror models in this worker.
- */
- getMirrorModels(): IMirrorModel[];
- }
- }
- //dtsv=3
|