package Ġnl . h ann ah sten . tex ify idea . ins pe ctions . latex . prob able bugs . packages Ċ Ċ import Ġcom . intellij . code Insight . daemon . Daemon Code Analyzer Ċ import Ġcom . intellij . code Inspection . Inspection Manager Ċ import Ġcom . intellij . code Inspection . Local Quick Fix Ċ import Ġcom . intellij . code Inspection . Problem Descriptor Ċ import Ġcom . intellij . code Inspection . Problem Highlight Type Ċ import Ġcom . intellij . notification . Notification Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . openapi . progress . Progress Indicator Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . progress . Task Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . psi . Psi File Ċ import Ġcom . intellij . psi . Smart Pointer Manager Ċ import Ġcom . intellij . psi . Smart Psi Element Pointer Ċ import Ġnl . h ann ah sten . tex ify idea . index . Lat ex Definition Index Ċ import Ġnl . h ann ah sten . tex ify idea . ins pe ctions . Insight Group Ċ import Ġnl . h ann ah sten . tex ify idea . ins pe ctions . Tex ify Inspection Base Ċ import Ġnl . h ann ah sten . tex ify idea . psi . Lat ex Commands Ċ import Ġnl . h ann ah sten . tex ify idea . reference . Input File Reference Ċ import Ġnl . h ann ah sten . tex ify idea . settings . sdk . Lat ex Sdk Util Ċ import Ġnl . h ann ah sten . tex ify idea . util .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCheck Ġif Ġa ĠLaTeX Ġpackage Ġis Ġnot Ġinstalled Ġ( only Ġfor ĠTe X ĠLive , Ġsince ĠMi K TeX Ġdownloads Ġthem Ġautomatically ). Ċ Ġ*/ Ċ class ĠLat ex Package Not Installed Inspection Ġ: ĠTex ify Inspection Base () Ġ{ ĊĊĠĠĠ Ġ// ĠThis Ġcaches Ġpackages Ġwhich Ġare Ġnot Ġinstalled , Ġwhich Ġis Ġneeded ĊĠĠĠ Ġ// Ġotherwise Ġwe Ġare Ġrunning Ġthe Ġexpensive Ġcall Ġto Ġt lm gr Ġbasically Ġon ĊĠĠĠ Ġ// Ġevery Ġletter Ġtyped Ġ- Ġexactly Ġthe Ġsame Ġcall Ġwith Ġthe Ġsame Ġresults ĊĠĠĠ Ġprivate Ġval Ġknown Not Installed Packages Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠ Ġoverride Ġval Ġinspection Group : ĠIns ight Group Ġ= ĠIns ight Group . LAT EX ĊĊĠĠĠ Ġoverride Ġval Ġinspection Id : ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" Package Not Installed " ĊĊĠĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Package Ġis Ġnot Ġinstalled " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinspect File ( file : ĠPsi File , Ġmanager : ĠIns pection Manager , Ġis O nt he Fly : ĠBoolean ): ĠList < Problem Descriptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptors Ġ= Ġdescriptor List () ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġhave Ġto Ġcheck Ġwhether Ġt lm gr Ġis Ġinstalled , Ġfor Ġthose Ġusers Ġwho Ġdon 't Ġwant Ġto Ġinstall ĠTe X ĠLive Ġin Ġthe Ġofficial Ġway ĊĠĠĠĠĠĠĠ Ġif Ġ( Lat ex Sdk Util . is T lm gr Available ( file . project )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstalled Packages Ġ= ĠTex Live Packages . package List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Packages Ġ= ĠLat ex Definition Index . get Commands ByName ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\\ Provides Package ", Ġfile . project , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile . project ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. project Search Scope ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . required Parameter ( 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit ?. toLowerCase () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackages Ġ= Ġinstalled Packages Ġ+ Ġcustom Packages ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= Ġfile . children OfType ( Lat ex Commands :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name Ġ== Ġ"\\ usepackage " Ġ|| Ġit . name Ġ== Ġ"\\ Require Package " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( command Ġin Ġcommands ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` package ` Ġ= Ġcommand . required Parameters . first OrNull ()?. toLowerCase () Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(` package ` Ġ! in Ġpackages ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġthe Ġcache Ġor Ġcheck Ġif Ġthe Ġfile Ġreference Ġresolves Ġ( in Ġthe Ġsame Ġway Ġwe Ġresolve Ġfor Ġthe Ġg utter Ġicon ). ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġknown Not Installed Packages . contains (` package `) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . references . filter Is Instance < Input File Reference >(). map NotNull Ġ{ Ġit . resolve () Ġ}. isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptors . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . create Problem Descriptor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Package Ġis Ġnot Ġinstalled Ġor Ġ\\ Provides Package Ġis Ġmissing ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstall Package ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSmart Pointer Manager . getInstance ( file . project ). create Smart Psi Element Pointer ( file ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` package `, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġknown Not Installed Packages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProblem Highlight Type . GENERIC _ ERROR _ OR _ WARNING , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis O nt he Fly ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġknown Not Installed Packages . add (` package `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApp arent ly Ġthe Ġpackage Ġis Ġinstalled , Ġbut Ġwas Ġnot Ġfound Ġinitially Ġby Ġthe ĠTex Live Package List Initializer Ġ( for Ġexample Ġstack rel , Ġcontained Ġin Ġthe Ġo ber die k Ġbundle ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTex Live Packages . package List . add (` package `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptors ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠInstall Package ( val Ġfile Pointer : ĠSmart Psi Element Pointer < Psi File >, Ġval ĠpackageName : ĠString , Ġval Ġknown Not Installed Packages : ĠMutable Set < String >) Ġ: ĠLocal Quick Fix Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ= Ġ" Install Ġ$ packageName " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInstall Ġthe Ġpackage Ġin Ġthe Ġbackground Ġand Ġadd Ġit Ġto Ġthe Ġlist Ġof Ġinstalled ĊĠĠĠĠĠĠĠĠ Ġ* Ġpackages Ġwhen Ġdone . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply Fix ( project : ĠProject , Ġdescriptor : ĠProblem Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠI Ġdon 't Ġknow Ġif Ġyou Ġactually Ġcould Ġinstall Ġmultiple Ġpackages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwith Ġone Ġfix , Ġbut Ġit 's Ġnot Ġa Ġbad Ġidea Ġto Ġclear Ġcache Ġonce Ġin Ġa Ġwhile ĊĠĠĠĠĠĠĠĠĠĠĠ Ġknown Not Installed Packages . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt lm gr Executable Ġ= ĠLat ex Sdk Util . get Executable Name (" tl mgr ", Ġproject ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. run ( object Ġ: ĠTask . Background able ( project , Ġ" Installing Ġ$ packageName ...") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun ( indicator : ĠProgress Indicator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtl name Ġ= ĠTex Live Packages . find Tex Live Name ( this , ĠpackageName , Ġproject ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tl name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" La TeX ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Package Ġ$ packageName Ġnot Ġinstalled ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Package Ġ$ packageName Ġwas Ġnot Ġinstalled Ġbecause Ġt lm gr Ġcould Ġnot Ġfind Ġ$ packageName . sty Ġanywhere . ĠTry Ġto Ġinstall Ġthe Ġpackage Ġmanually .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Type . ERROR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). notify ( project ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Installing Ġ$ packageName ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġ"$ tl mgr Executable Ġinstall Ġ$ tl name ". run Command () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( output ?. contains (" tl mgr Ġupdate Ġ-- self ") Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Updating Ġt lm gr ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ tl mgr Executable Ġupdate Ġ-- self ". run Command () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Installing Ġ$ packageName ..." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ tl mgr Executable Ġinstall Ġ$ tl name ". run Command () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTex Live Packages . package List . add ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠR er un Ġins pe ctions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDa emon Code Analyzer . getInstance ( project ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. restart ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Pointer . containing File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }