/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠPat rick ĠS che i be Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġde . hal ir ut an . mat hematic a . code insight . completion . providers Ċ Ċ import Ġcom . intellij . code Insight . completion . Completion Contributor Ċ import Ġcom . intellij . code Insight . completion . Completion Parameters Ċ import Ġcom . intellij . code Insight . completion . Completion ResultSet Ċ import Ġcom . intellij . code Insight . completion . Completion Type Ċ import Ġcom . intellij . code Insight . completion . Prior it ized Lookup Element Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . openapi . module . Module Util Core Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . patterns . Platform Patterns . psi Element Ċ import Ġcom . intellij . util . Processing Context Ċ import Ġcom . intellij . util . indexing . File Based Index Ċ import Ġde . hal ir ut an . mat hematic a . code insight . completion . Mat hematic a Completion Contributor . IMPORT _ VARIABLE _ PRIORITY Ċ import Ġde . hal ir ut an . mat hematic a . index . package export . Mat hematic a Package Export Index Ċ import Ġde . hal ir ut an . mat hematic a . lang . parsing . Mat hematic a Element Types Ċ import Ġde . hal ir ut an . mat hematic a . lang . psi . api . Symbol ĊĊ Ċ /** Ċ Ġ* ĠAc cesses Ġthe Ġfile Ġindex Ġto Ġprovide Ġcompletion Ġfor Ġfunctions Ġthat Ġare Ġdefined Ġin Ġother Ġpackages . Ċ Ġ*/ Ċ class ĠImport ed Symbol Completion Ġ: ĠMathematic a Completion Provider () Ġ{ ĊĊĠ Ġoverride Ġfun ĠaddTo ( contributor : ĠCompletion Contributor ) Ġ{ ĊĠĠĠ Ġval Ġsymbol Pattern Ġ= Ġpsi Element (). with ElementType ( Mat hematic a Element Types . IDENTIFIER ) ĊĠĠĠ Ġcontributor . extend ( Completion Type . BASIC , Ġsymbol Pattern , Ġthis ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġadd Comp letions ( parameters : ĠCompletion Parameters , Ġcontext : ĠProcessing Context , Ġresult : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠ Ġval Ġcalling Symbol Ġ= Ġparameters . position . parent ĊĠĠĠ Ġval Ġproject Ġ= Ġcalling Symbol . project ĊĊĠĠĠ Ġval Ġprefix Ġ= Ġfind Current Text ( parameters , Ġparameters . position ) ĊĠĠĠ Ġif Ġ( parameters . invocation Count Ġ== Ġ 0 Ġ&& Ġprefix . isEmpty () Ġ|| Ġcalling Symbol Ġ! is ĠSymbol ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġoriginal File Ġ= Ġparameters . original File ĊĠĠĠ Ġval Ġmodule Ġ= ĠModule Util Core . find Module For File ( original File . virtual File , Ġproject ) ĊĠĠĠ Ġif Ġ( module Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġmodule Scope Ġ= Ġmodule . getModule With Dependencies And Libraries Scope ( true ) ĊĠĠĠĠĠ Ġval Ġindex Ġ= ĠFile Based Index . getInstance () ĊĠĠĠĠĠ Ġval Ġindex ID Ġ= ĠMathematic a Package Export Index . INDEX _ ID ĊĠĠĠĠĠ Ġindex . getAll Keys ( index ID , Ġproject ). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġin Scope Ġ= Ġ! index . process Values ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfile , Ġ_ Ġ-> Ġfile Ġ== Ġoriginal File . virtual File Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Scope ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ ĠProgress Manager . check Canceled () ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( in Scope Ġ&& Ġit . is Exported ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( Prior it ized Lookup Element . with Priority ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLookup Element Builder . create ( it . symbol ). with Type Text (" (" Ġ+ Ġit . fileName Ġ+ Ġ" )", Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIMPORT _ VARIABLE _ PRIORITY )) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ