{-# LANGUAGE CPP #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE OverloadedStrings #-}
module HlsPlugins where
import Development.IDE.Types.Logger (Pretty (pretty), Recorder,
WithPriority, cmapWithPrio)
import Ide.PluginUtils (pluginDescToIdePlugins)
import Ide.Types (IdePlugins,
PluginId (PluginId))
import Development.IDE (IdeState)
import qualified Development.IDE.Plugin.HLS.GhcIde as GhcIde
#if hls_qualifyImportedNames
import qualified Ide.Plugin.QualifyImportedNames as QualifyImportedNames
#endif
#if hls_callHierarchy
import qualified Ide.Plugin.CallHierarchy as CallHierarchy
#endif
#if hls_cabal
import qualified Ide.Plugin.Cabal as Cabal
#endif
#if hls_class
import qualified Ide.Plugin.Class as Class
#endif
#if hls_haddockComments
import qualified Ide.Plugin.HaddockComments as HaddockComments
#endif
#if hls_eval
import qualified Ide.Plugin.Eval as Eval
#endif
#if hls_importLens
import qualified Ide.Plugin.ExplicitImports as ExplicitImports
#endif
#if hls_refineImports
import qualified Ide.Plugin.RefineImports as RefineImports
#endif
#if hls_rename
import qualified Ide.Plugin.Rename as Rename
#endif
#if hls_retrie
import qualified Ide.Plugin.Retrie as Retrie
#endif
#if hls_tactic
import qualified Ide.Plugin.Tactic as Tactic
#endif
#if hls_hlint
import qualified Ide.Plugin.Hlint as Hlint
#endif
#if hls_stan
import qualified Ide.Plugin.Stan as Stan
#endif
#if hls_moduleName
import qualified Ide.Plugin.ModuleName as ModuleName
#endif
#if hls_pragmas
import qualified Ide.Plugin.Pragmas as Pragmas
#endif
#if hls_splice
import qualified Ide.Plugin.Splice as Splice
#endif
#if hls_alternateNumberFormat
import qualified Ide.Plugin.AlternateNumberFormat as AlternateNumberFormat
#endif
#if hls_codeRange
import qualified Ide.Plugin.CodeRange as CodeRange
#endif
#if hls_changeTypeSignature
import qualified Ide.Plugin.ChangeTypeSignature as ChangeTypeSignature
#endif
#if hls_gadt
import qualified Ide.Plugin.GADT as GADT
#endif
#if explicitFixity
import qualified Ide.Plugin.ExplicitFixity as ExplicitFixity
#endif
#if explicitFields
import qualified Ide.Plugin.ExplicitFields as ExplicitFields
#endif
#if hls_floskell
import qualified Ide.Plugin.Floskell as Floskell
#endif
#if hls_fourmolu
import qualified Ide.Plugin.Fourmolu as Fourmolu
#endif
#if hls_cabalfmt
import qualified Ide.Plugin.CabalFmt as CabalFmt
#endif
#if hls_ormolu
import qualified Ide.Plugin.Ormolu as Ormolu
#endif
#if hls_stylishHaskell
import qualified Ide.Plugin.StylishHaskell as StylishHaskell
#endif
#if hls_refactor
import qualified Development.IDE.Plugin.CodeAction as Refactor
#endif
data Log = forall a. (Pretty a) => Log PluginId a
instance Pretty Log where
pretty :: forall ann. Log -> Doc ann
pretty (Log (PluginId Text
pId) a
a) = forall a ann. Pretty a => a -> Doc ann
pretty Text
pId forall a. Semigroup a => a -> a -> a
<> Doc ann
": " forall a. Semigroup a => a -> a -> a
<> forall a ann. Pretty a => a -> Doc ann
pretty a
a
idePlugins :: Recorder (WithPriority Log) -> IdePlugins IdeState
idePlugins :: Recorder (WithPriority Log) -> IdePlugins IdeState
idePlugins Recorder (WithPriority Log)
recorder = forall ideState. [PluginDescriptor ideState] -> IdePlugins ideState
pluginDescToIdePlugins [PluginDescriptor IdeState]
allPlugins
where
pluginRecorder :: forall log. (Pretty log) => PluginId -> Recorder (WithPriority log)
pluginRecorder :: forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pluginId = forall a b.
(a -> b) -> Recorder (WithPriority b) -> Recorder (WithPriority a)
cmapWithPrio (forall a. Pretty a => PluginId -> a -> Log
Log PluginId
pluginId) Recorder (WithPriority Log)
recorder
allPlugins :: [PluginDescriptor IdeState]
allPlugins =
#if hls_cabal
let pId :: PluginId
pId = PluginId
"cabal" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Cabal.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
#endif
#if hls_pragmas
PluginId -> PluginDescriptor IdeState
Pragmas.descriptor PluginId
"pragmas" forall a. a -> [a] -> [a]
:
#endif
#if hls_floskell
PluginId -> PluginDescriptor IdeState
Floskell.descriptor PluginId
"floskell" forall a. a -> [a] -> [a]
:
#endif
#if hls_fourmolu
let pId :: PluginId
pId = PluginId
"fourmolu" in Recorder (WithPriority LogEvent)
-> PluginId -> PluginDescriptor IdeState
Fourmolu.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_cabalfmt
let pId :: PluginId
pId = PluginId
"cabalfmt" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
CabalFmt.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_tactic
let pId = "tactics" in Tactic.descriptor (pluginRecorder pId) pId:
#endif
#if hls_ormolu
PluginId -> PluginDescriptor IdeState
Ormolu.descriptor PluginId
"ormolu" forall a. a -> [a] -> [a]
:
#endif
#if hls_stylishHaskell
PluginId -> PluginDescriptor IdeState
StylishHaskell.descriptor PluginId
"stylish-haskell" forall a. a -> [a] -> [a]
:
#endif
#if hls_rename
let pId :: PluginId
pId = PluginId
"rename" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Rename.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_retrie
PluginId -> PluginDescriptor IdeState
Retrie.descriptor PluginId
"retrie" forall a. a -> [a] -> [a]
:
#endif
#if hls_callHierarchy
PluginId -> PluginDescriptor IdeState
CallHierarchy.descriptor PluginId
"callHierarchy" forall a. a -> [a] -> [a]
:
#endif
#if hls_class
let pId :: PluginId
pId = PluginId
"class" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Class.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_haddockComments
let pId = "haddockComments" in HaddockComments.descriptor (pluginRecorder pId) pId:
#endif
#if hls_eval
let pId :: PluginId
pId = PluginId
"eval" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Eval.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_importLens
let pId :: PluginId
pId = PluginId
"importLens" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
ExplicitImports.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_qualifyImportedNames
PluginId -> PluginDescriptor IdeState
QualifyImportedNames.descriptor PluginId
"qualifyImportedNames" forall a. a -> [a] -> [a]
:
#endif
#if hls_refineImports
let pId :: PluginId
pId = PluginId
"refineImports" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
RefineImports.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_moduleName
let pId :: PluginId
pId = PluginId
"moduleName" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
ModuleName.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_hlint
let pId :: PluginId
pId = PluginId
"hlint" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Hlint.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_stan
let pId = "stan" in Stan.descriptor (pluginRecorder pId) pId :
#endif
#if hls_splice
PluginId -> PluginDescriptor IdeState
Splice.descriptor PluginId
"splice" forall a. a -> [a] -> [a]
:
#endif
#if hls_alternateNumberFormat
let pId :: PluginId
pId = PluginId
"alternateNumberFormat" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
AlternateNumberFormat.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
#endif
#if hls_codeRange
let pId :: PluginId
pId = PluginId
"codeRange" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
CodeRange.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pIdforall a. a -> [a] -> [a]
:
#endif
#if hls_changeTypeSignature
PluginId -> PluginDescriptor IdeState
ChangeTypeSignature.descriptor PluginId
"changeTypeSignature" forall a. a -> [a] -> [a]
:
#endif
#if hls_gadt
PluginId -> PluginDescriptor IdeState
GADT.descriptor PluginId
"gadt" forall a. a -> [a] -> [a]
:
#endif
#if hls_refactor
let pId :: PluginId
pId = PluginId
"ghcide-code-actions-imports-exports" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Refactor.iePluginDescriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
let pId :: PluginId
pId = PluginId
"ghcide-code-actions-type-signatures" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Refactor.typeSigsPluginDescriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
let pId :: PluginId
pId = PluginId
"ghcide-code-actions-bindings" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Refactor.bindingsPluginDescriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
let pId :: PluginId
pId = PluginId
"ghcide-code-actions-fill-holes" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Refactor.fillHolePluginDescriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
let pId :: PluginId
pId = PluginId
"ghcide-extend-import-action" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
Refactor.extendImportPluginDescriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId forall a. a -> [a] -> [a]
:
#endif
Recorder (WithPriority Log) -> [PluginDescriptor IdeState]
GhcIde.descriptors (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
"ghcide")
#if explicitFixity
forall a. [a] -> [a] -> [a]
++ [let pId :: PluginId
pId = PluginId
"explicit-fixity" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
ExplicitFixity.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId]
#endif
#if explicitFields
forall a. [a] -> [a] -> [a]
++ [let pId :: PluginId
pId = PluginId
"explicit-fields" in Recorder (WithPriority Log)
-> PluginId -> PluginDescriptor IdeState
ExplicitFields.descriptor (forall log. Pretty log => PluginId -> Recorder (WithPriority log)
pluginRecorder PluginId
pId) PluginId
pId]
#endif