package Ġarrow . meta . ide . dsl . editor . documentation Ċ Ċ import Ġarrow . meta . ide . Meta Ide Ċ import Ġarrow . meta . ide . ph ases . editor . extension . Extension Provider Ċ import Ġarrow . meta . internal . No op Ċ import Ġarrow . meta . ph ases . Extension Phase Ċ import Ġcom . intellij . lang . documentation . Abstract Documentation Provider Ċ import Ġcom . intellij . lang . documentation . Documentation Provider Ċ import Ġcom . intellij . openapi . extensions . Loading Order Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . Psi Manager Ċ Ċ /** Ċ Ġ* Ġ[ Documentation Syntax ] Ġregisters Ġan Ġextension Ġfor Ġdocumentation Ġsupport . Ċ Ġ* ĠCheck Ġout Ġ[ Documentation ]( http :// www . jetbrains . org / intellij / sdk / docs / reference _ guide / custom _ language _ support / documentation . html ? search = doc ) Ċ Ġ*/ Ċ interface ĠDocumentation Syntax Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* Ġregisters Ġa Ġ[ Documentation Provider ]. ĊĠĠ Ġ* ĠUsers Ġare Ġnow Ġable Ġto Ġhover Ġover Ġdescriptors Ġand Ġsee Ġthe Ġprovided Ġdocumentation . ĊĠĠ Ġ* Ġ``` kotlin : ank ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . Ide Plugin ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . Meta Ide ĊĠĠ Ġ* Ġimport Ġarrow . meta . ide . invoke ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . descriptors . Declaration Descriptor ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . idea . Html Classifier Name Policy ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . idea . Wrap Value Parameter Handler ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . idea . cache s . resolve . analyze ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . psi . Kt Declaration ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . renderer . Annotation Arguments Rendering Policy ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . renderer . Classifier Name Policy ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . renderer . Descriptor Renderer ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . resolve . Binding Context ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . resolve . lazy . Body Resolve Mode ĊĠĠ Ġ* Ġimport Ġorg . jetbrains . kotlin . utils . addTo Std lib . safe As ĊĠĠ Ġ* ĊĠĠ Ġ* Ġprivate Ġval ĠDeclaration Renderer : ĠDescriptor Renderer Ġ= ĠDescriptor Renderer . HTML . with Options Ġ{ ĊĠĠ Ġ* Ġ Ġclassifier Name Policy Ġ= ĠHtml Classifier Name Policy ( Classifier Name Policy . SHORT ) ĊĠĠ Ġ* Ġ Ġvalue Parameters Handler Ġ= ĠWrap Value Parameter Handler ( value Parameters Handler ) ĊĠĠ Ġ* Ġ Ġannotation Arguments Rendering Policy Ġ= ĠAnnotation Arguments Rendering Policy . UNLESS _ EMPTY ĊĠĠ Ġ* Ġ Ġrender Companion ObjectName Ġ= Ġtrue ĊĠĠ Ġ* Ġ Ġwith Defined In Ġ= Ġfalse ĊĠĠ Ġ* Ġ Ġeach Annotation On NewLine Ġ= Ġtrue ĊĠĠ Ġ* Ġ Ġbold Only For Names In Html Ġ= Ġtrue ĊĠĠ Ġ* Ġ} ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ// sample Start ĊĠĠ Ġ* Ġval ĠMeta Ide . sample Quick Docs : ĠIde Plugin ĊĠĠ Ġ* Ġ Ġget () Ġ= Ġ" Quick Docs Declarations " Ġ{ ĊĠĠ Ġ* ĠĠ Ġmeta ( ĊĠĠ Ġ* ĠĠĠ Ġadd Documentation Provider ( ĊĠĠ Ġ* ĠĠĠĠ Ġquick Navigate Info Ġ= Ġ{ Ġelement , Ġoriginal Element Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠ Ġelement . safe As < Kt Declaration >() ?. let Ġ{ Ġdecl : ĠK t Declaration Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġdecl . analyze ( Body Resolve Mode . PAR TIAL ). let Ġ{ Ġcontext : ĠBinding Context Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġcontext [ Binding Context . DECL AR ATION _ TO _ DESCRIPTOR , Ġdecl ]?. let Ġ{ Ġdescriptor : ĠDeclaration Descriptor Ġ-> ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠĠ ĠDeclaration Renderer . render ( descriptor ) Ġ// Ġthis ĠDeclaration Renderer Ġpretty Ġprint 's Ġthe Ġdescriptor ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠĠ Ġ} ĊĠĠ Ġ* ĠĠĠĠĠ Ġ) ĊĠĠ Ġ* ĠĠĠĠ Ġ) ĊĠĠ Ġ* ĠĠĠ Ġ} ĊĠĠ Ġ* Ġ// sample End ĊĠĠ Ġ* Ġ``` ĊĠĠ Ġ* ĠThis Ġexample Ġrenders Ġquick Docs Ġon Ġlocal Ġdeclarations , Ġbut Ġis Ġins ufficient Ġfor Ġtoplevel ĠK t Declarations . ĊĠĠ Ġ* ĠIn Ġaddition , Ġthis Ġimplementation Ġshould Ġnot Ġrender Ġthe Ġcomplete ĠDocs Ġonly Ġthe Ġminimal Ġamount Ġof Ġdata . ĊĠĠ Ġ* ĠHence , Ġthe ĠK Doc 's Ġof Ġthis Ġdeclaration Ġshould Ġbe Ġadded Ġin Ġ[ generate Doc ]. ĊĠĠ Ġ* Ġ@ see Ġquick Documentation Provider ĊĠĠ Ġ*/ ĊĠ Ġfun ĠMeta Ide . add Documentation Provider ( ĊĠĠĠ Ġquick Navigate Info : Ġ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ) Ġ-> ĠString ? Ġ= ĠNo op . nullable 2 (), ĊĠĠĠ Ġgenerate Doc : Ġ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ) Ġ-> ĠString ? Ġ= ĠNo op . nullable 2 (), ĊĠĠĠ Ġdocumentation Element For Link : Ġ( psi Manager : ĠPsi Manager , Ġlink : ĠString , Ġcontext : ĠPsi Element ) Ġ-> ĠPsi Element ? Ġ= ĠNo op . nullable 3 () ĊĠ Ġ): ĠExtension Phase Ġ= ĊĠĠĠ ĠExtension Provider . Add Extension ( ĊĠĠĠĠĠ ĠDocumentation Provider . EP _ NAME , ĊĠĠĠĠĠ Ġquick Documentation Provider ( quick Navigate Info , Ġgenerate Doc , Ġdocumentation Element For Link ), ĊĠĠĠĠĠ ĠLoading Order . FIRST ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAn Ġexample Ġis Ġhere Ġ{@ link Ġhttps :// github . com / Jet Brains / kotlin / blob / 4 9 d 6 bb bd 6 b 1 c 2 fea 8 5 df 0 3 af 0 4 7 aa 0 cf 2 1 ce 0 b 9 7 / idea / src / org / jetbrains / kotlin / idea / Kotlin Quick Documentation Provider . kt # L 1 4 8 } ĊĠĠ Ġ* Ġ@ param Ġquick Navigate Info Ġreturns Ġthe Ġshort Ġversion Ġof Ġthe ĠDoc ĊĠĠ Ġ* Ġ@ param Ġgenerate Doc Ġreturns Ġthe Ġentire ĠDoc ĊĠĠ Ġ* Ġ@ param Ġdocumentation Element For Link Ġgiven Ġa Ġ[ link ] Ġand Ġa Ġ[ context ] Ġthis Ġfunction Ġresolves Ġthe ĠPsi Element Ġof Ġthat Ġlink ĊĠĠ Ġ* Ġ@ see Ġ[ Documentation Provider ] ĊĠĠ Ġ*/ ĊĠ Ġfun ĠDocumentation Syntax . quick Documentation Provider ( ĊĠĠĠ Ġquick Navigate Info : Ġ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ) Ġ-> ĠString ?, ĊĠĠĠ Ġgenerate Doc : Ġ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ) Ġ-> ĠString ?, ĊĠĠĠ Ġdocumentation Element For Link : Ġ( psi Manager : ĠPsi Manager , Ġlink : ĠString , Ġcontext : ĠPsi Element ) Ġ-> ĠPsi Element ? ĊĠ Ġ): ĠAbstract Documentation Provider Ġ= ĊĠĠĠ Ġobject Ġ: ĠAbstract Documentation Provider () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġget Quick Navigate Info ( element : ĠPsi Element ?, Ġoriginal Element : ĠPsi Element ?): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġelement ?. let Ġ{ Ġel Ġ-> Ġoriginal Element ?. let Ġ{ Ġoriginal Ġ-> Ġquick Navigate Info ( el , Ġoriginal ) Ġ} Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġgenerate Doc ( element : ĠPsi Element ?, Ġoriginal Element : ĠPsi Element ?): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġelement ?. let Ġ{ Ġel Ġ-> Ġoriginal Element ?. let Ġ{ Ġoriginal Ġ-> Ġgenerate Doc ( el , Ġoriginal ) Ġ} Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġget Documentation Element For Link ( psi Manager : ĠPsi Manager ?, Ġlink : ĠString ?, Ġcontext : ĠPsi Element ?): ĠPsi Element ? Ġ= ĊĠĠĠĠĠĠĠ Ġpsi Manager ?. let Ġ{ Ġmanager Ġ-> Ġlink ?. let Ġ{ Ġl Ġ-> Ġcontext ?. let Ġ{ Ġctx Ġ-> Ġdocumentation Element For Link ( manager , Ġl , Ġctx ) Ġ} Ġ} Ġ} ĊĠĠĠ Ġ} Ċ }