-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | See README on Github for more information
--
-- static-ls ("static language server") reads static project information
-- to provide IDE functionality through the language server protocol.
-- static-ls will not generate this information on its own and instead
-- will rely on the user to generate this information via separate
-- programs
@package static-ls
@version 0.1.2
module StaticLS.Except
exceptToMaybe :: Except a b -> Maybe b
module StaticLS.HIE
hieAstNodeToIdentifiers :: HieAST a -> [Identifier]
identifiersToNames :: [Identifier] -> [Name]
hieAstToNames :: HieAST a -> [Name]
hieAstsAtPoint :: HieFile -> HieDbCoords -> Maybe HieDbCoords -> [HieAST TypeIndex]
hiedbCoordsToLspPosition :: Monad m => HieDbCoords -> ExceptT UIntConversionException m Position
lspPositionToHieDbCoords :: Position -> HieDbCoords
namesAtPoint :: HieFile -> HieDbCoords -> [Name]
instance GHC.Show.Show StaticLS.HIE.UIntConversionException
instance GHC.Exception.Type.Exception StaticLS.HIE.UIntConversionException
module StaticLS.HIE.File.Except
data HieFileReadException
HieFileReadException :: HieFileReadException
HieFileVersionException :: HieHeader -> HieFileReadException
instance GHC.Show.Show StaticLS.HIE.File.Except.HieFileReadException
instance GHC.Exception.Type.Exception StaticLS.HIE.File.Except.HieFileReadException
module StaticLS.HieDb
-- | Lookup HieModule row from HieDb given the path to the
-- Haskell hie file A temporary function until this is supported in hiedb
-- proper
lookupHieFileFromHie :: HieDb -> FilePath -> IO (Maybe HieModuleRow)
module StaticLS.Maybe
flatMaybeT :: Monad m => MaybeT m (Maybe a) -> MaybeT m a
toAlt :: (Functor f, Foldable f, Alternative g) => f a -> g a
orDie :: Monad m => Maybe a -> e -> ExceptT e m a
orDieT :: Monad m => MaybeT m a -> e -> ExceptT e m a
module StaticLS.SDoc
showGhc :: Outputable a => a -> Text
showSD :: SDoc -> Text
printSDocSimple :: SDoc -> String
pprStyleToSDocContext :: PprStyle -> SDocContext
showNameWithoutUniques :: Outputable a => a -> Text
module StaticLS.HI
getDocs :: Name -> ModIface -> Maybe NameDocs
getDocsBatch :: [Name] -> ModIface -> [NameDocs]
renderNameDocs :: NameDocs -> Text
data NameDocs
NameDocs :: Maybe [HsDoc GhcRn] -> IntMap (HsDoc GhcRn) -> NameDocs
[$sel:declComment:NameDocs] :: NameDocs -> Maybe [HsDoc GhcRn]
[$sel:argComments:NameDocs] :: NameDocs -> IntMap (HsDoc GhcRn)
instance GHC.Utils.Outputable.Outputable StaticLS.HI.NameDocs
module StaticLS.IDE.Hover.Info
hoverInfo :: Array TypeIndex HieTypeFlat -> [NameDocs] -> HieAST TypeIndex -> (Maybe Range, [Text])
module StaticLS.SrcFiles
type SrcFilePath = FilePath
srcDirs :: [FilePath]
module StaticLS.FilePath
modToFilePath :: ModuleName -> String -> FilePath
-- | Substitute a filepath extension and parent directory starting from
-- some root
subRootExtensionFilepath :: MonadIO m => FilePath -> FilePath -> String -> FilePath -> MaybeT m FilePath
module StaticLS.StaticEnv.Options
defaultStaticEnvOptions :: StaticEnvOptions
defaultHieDb :: FilePath
defaultHieFiles :: FilePath
defaultSrcDirs :: [FilePath]
defaultHiFiles :: FilePath
data StaticEnvOptions
StaticEnvOptions :: FilePath -> FilePath -> FilePath -> [FilePath] -> StaticEnvOptions
-- | Relative path to hiedb file hiedb is required for find references and
-- go to definition to work correctly
[$sel:optionHieDbPath:StaticEnvOptions] :: StaticEnvOptions -> FilePath
-- | Relative path to hie files directory hie files are required for all
-- functionality
[$sel:optionHieFilesPath:StaticEnvOptions] :: StaticEnvOptions -> FilePath
-- | Relative path to hi files directory
[$sel:optionHiFilesPath:StaticEnvOptions] :: StaticEnvOptions -> FilePath
[$sel:optionSrcDirs:StaticEnvOptions] :: StaticEnvOptions -> [FilePath]
instance GHC.Classes.Eq StaticLS.StaticEnv.Options.StaticEnvOptions
instance GHC.Show.Show StaticLS.StaticEnv.Options.StaticEnvOptions
module StaticLS.StaticEnv
initStaticEnv :: FilePath -> StaticEnvOptions -> IO StaticEnv
runStaticLs :: StaticEnv -> StaticLs a -> IO a
getStaticEnv :: HasStaticEnv m => m StaticEnv
-- | Run an hiedb action in an exceptT
runHieDbExceptT :: (HasStaticEnv m, MonadIO m) => (HieDb -> IO a) -> ExceptT HieDbException m a
-- | Run an hiedb action with the MaybeT Monad
runHieDbMaybeT :: (HasStaticEnv m, MonadIO m) => (HieDb -> IO a) -> MaybeT m a
-- | Static environment used to fetch data
data StaticEnv
StaticEnv :: HieDbPath -> HieFilePath -> HiFilePath -> FilePath -> [FilePath] -> StaticEnv
-- | Path to the hiedb file
[$sel:hieDbPath:StaticEnv] :: StaticEnv -> HieDbPath
[$sel:hieFilesPath:StaticEnv] :: StaticEnv -> HieFilePath
[$sel:hiFilesPath:StaticEnv] :: StaticEnv -> HiFilePath
-- | workspace root
[$sel:wsRoot:StaticEnv] :: StaticEnv -> FilePath
-- | directories to search for source code in order of priority
[$sel:srcDirs:StaticEnv] :: StaticEnv -> [FilePath]
type StaticLs = ReaderT StaticEnv IO
type HieDbPath = FilePath
type HieFilePath = FilePath
type HiFilePath = FilePath
type HasStaticEnv = MonadReader StaticEnv
instance GHC.Show.Show StaticLS.StaticEnv.HieDbException
instance GHC.Show.Show StaticLS.StaticEnv.StaticEnv
instance GHC.Classes.Eq StaticLS.StaticEnv.StaticEnv
instance GHC.Exception.Type.Exception StaticLS.StaticEnv.HieDbException
module StaticLS.HIE.File
-- | Retrieve a hie info from a lsp text document identifier
getHieFileFromTdi :: (HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> MaybeT m HieFile
-- | Retrieve an hie file from a hie filepath
getHieFile :: (HasCallStack, MonadIO m) => HieFilePath -> ExceptT HieFileReadException m HieFile
-- | Retrieve an hie file from a module name
modToHieFile :: (HasStaticEnv m, MonadIO m) => ModuleName -> MaybeT m HieFile
-- | Retrieve a src file from a module name
modToSrcFile :: (HasStaticEnv m, MonadIO m) => ModuleName -> MaybeT m SrcFilePath
-- | Fetch a src file from an hie file, checking hiedb but falling back on
-- a file manipulation method if not indexed
srcFilePathToHieFilePath :: (HasStaticEnv m, MonadIO m) => SrcFilePath -> MaybeT m HieFilePath
-- | Fetch an hie file from a src file
hieFilePathToSrcFilePath :: (HasStaticEnv m, MonadIO m) => HieFilePath -> MaybeT m SrcFilePath
getHieFileMap :: FilePath -> HieFilePath -> IO (Map SrcFilePath HieInfo)
hieFileMapToSrcMap :: Map SrcFilePath HieInfo -> Map HieFilePath SrcFilePath
module StaticLS.IDE.Workspace.Symbol
symbolInfo :: (HasCallStack, HasStaticEnv m, MonadIO m) => Text -> m [SymbolInformation]
defRowToSymbolInfo :: (HasStaticEnv m, MonadIO m) => Res DefRow -> m (Maybe SymbolInformation)
toUri :: FilePath -> Uri
module StaticLS.IDE.References
findRefs :: (HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> Position -> m [Location]
module StaticLS.IDE.Definition
getDefinition :: (HasCallStack, HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> Position -> m [DefinitionLink]
getTypeDefinition :: (HasCallStack, HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> Position -> m [DefinitionLink]
module StaticLS.HI.File
-- | Only supports 64 bit platforms
readHiFile :: MonadIO m => FilePath -> m (Maybe ModIface)
srcFilePathToHiFilePath :: (HasStaticEnv m, MonadIO m) => SrcFilePath -> MaybeT m HiFilePath
getModIfaceFromTdi :: (HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> MaybeT m ModIface
tdiToHiFilePath :: (HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> MaybeT m HiFilePath
modToHiFile :: (HasStaticEnv m, MonadIO m) => ModuleName -> MaybeT m HiFilePath
module StaticLS.IDE.Hover
-- | Retrieve hover information.
retrieveHover :: (HasCallStack, HasStaticEnv m, MonadIO m) => TextDocumentIdentifier -> Position -> m (Maybe Hover)
module StaticLS.Server
runServer :: StaticEnvOptions -> IO Int