Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ide.Plugin.Cabal.Completion.Types
Synopsis
- data Log
- data ParseCabal = ParseCabal
- type Context = (StanzaContext, FieldContext)
- data StanzaContext
- = TopLevel
- | Stanza StanzaType (Maybe StanzaName)
- data FieldContext
- type KeyWordName = Text
- type StanzaName = Text
- type StanzaType = Text
- data CabalPrefixInfo = CabalPrefixInfo {}
- data Apostrophe
- applyStringNotation :: Maybe Apostrophe -> Text -> Text
Documentation
Constructors
LogFileSplitError Position | |
LogUnknownKeyWordInContextError KeyWordName | This should never occur since we extract the word to lookup from the same map we look it up in. |
LogUnknownStanzaNameInContextError StanzaName | This should never occur since we extract the word to lookup from the same map we look it up in. |
LogFilePathCompleterIOError FilePath IOError | |
LogUseWithStaleFastNoResult | |
LogMapLookUpOfKnownKeyFailed Text |
data ParseCabal #
Constructors
ParseCabal |
Instances
Generic ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types Associated Types type Rep ParseCabal :: Type -> Type | |
Show ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> ParseCabal -> ShowS # show :: ParseCabal -> String # showList :: [ParseCabal] -> ShowS # | |
NFData ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods rnf :: ParseCabal -> () # | |
Eq ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types | |
Hashable ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types | |
type Rep ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types type Rep ParseCabal = D1 ('MetaData "ParseCabal" "Ide.Plugin.Cabal.Completion.Types" "hls-cabal-plugin-2.4.0.0-2yIyCDAy3v5CwbFiXVUq41" 'False) (C1 ('MetaCons "ParseCabal" 'PrefixI 'False) (U1 :: Type -> Type)) | |
type RuleResult ParseCabal # | |
Defined in Ide.Plugin.Cabal.Completion.Types |
type Context = (StanzaContext, FieldContext) #
The context a cursor can be in within a cabal file.
We can be in stanzas or the top level, and additionally we can be in a context where we have already written a keyword but no value for it yet
data StanzaContext #
Context inside a cabal file. Used to decide which keywords to suggest.
Constructors
TopLevel | Top level context in a cabal file such as |
Stanza StanzaType (Maybe StanzaName) | Nested context in a cabal file, such as Stanzas have their own fields which differ from top-level fields. Each stanza must be named, such as 'executable exe', except for the main library. |
Instances
Read StanzaContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods readsPrec :: Int -> ReadS StanzaContext # readList :: ReadS [StanzaContext] # readPrec :: ReadPrec StanzaContext # readListPrec :: ReadPrec [StanzaContext] # | |
Show StanzaContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> StanzaContext -> ShowS # show :: StanzaContext -> String # showList :: [StanzaContext] -> ShowS # | |
Eq StanzaContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: StanzaContext -> StanzaContext -> Bool # (/=) :: StanzaContext -> StanzaContext -> Bool # |
data FieldContext #
Keyword context in a cabal file.
Used to decide whether to suggest values or keywords.
Constructors
KeyWord KeyWordName | Key word context, where a keyword occurs right before the current word to be completed |
None | Keyword context where no keyword occurs right before the current word to be completed |
Instances
Read FieldContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods readsPrec :: Int -> ReadS FieldContext # readList :: ReadS [FieldContext] # readPrec :: ReadPrec FieldContext # readListPrec :: ReadPrec [FieldContext] # | |
Show FieldContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> FieldContext -> ShowS # show :: FieldContext -> String # showList :: [FieldContext] -> ShowS # | |
Eq FieldContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types |
type KeyWordName = Text #
type StanzaName = Text #
type StanzaType = Text #
data CabalPrefixInfo #
Information regarding the current completion status
Example: "dir1/fi
having been written to the file
would correspond to:
completionPrefix = "dir1/fi" isStringNotation = LeftSide ...
We define this type instead of simply using VFS.PosPrefixInfo since e.g. for filepaths we need more than just the word before the cursor (as can be seen above), since we want to capture the whole filepath before the cursor.
We also use this type to wrap all information necessary to complete filepaths and other values in a cabal file.
Constructors
CabalPrefixInfo | |
Fields
|
Instances
Show CabalPrefixInfo # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> CabalPrefixInfo -> ShowS # show :: CabalPrefixInfo -> String # showList :: [CabalPrefixInfo] -> ShowS # | |
Eq CabalPrefixInfo # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: CabalPrefixInfo -> CabalPrefixInfo -> Bool # (/=) :: CabalPrefixInfo -> CabalPrefixInfo -> Bool # |
data Apostrophe #
Where are the apostrophes around the item to be completed?
Surrounded
means the item to complete already has the necessary apostrophes,
while LeftSide
means, a closing apostrophe has to be added after the completion item.
Constructors
Surrounded | |
LeftSide |
Instances
Show Apostrophe # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> Apostrophe -> ShowS # show :: Apostrophe -> String # showList :: [Apostrophe] -> ShowS # | |
Eq Apostrophe # | |
Defined in Ide.Plugin.Cabal.Completion.Types | |
Ord Apostrophe # | |
Defined in Ide.Plugin.Cabal.Completion.Types Methods compare :: Apostrophe -> Apostrophe -> Ordering (<) :: Apostrophe -> Apostrophe -> Bool (<=) :: Apostrophe -> Apostrophe -> Bool (>) :: Apostrophe -> Apostrophe -> Bool (>=) :: Apostrophe -> Apostrophe -> Bool max :: Apostrophe -> Apostrophe -> Apostrophe min :: Apostrophe -> Apostrophe -> Apostrophe |
applyStringNotation :: Maybe Apostrophe -> Text -> Text #
Wraps a completion in apostrophes where appropriate.
If a completion starts with an apostrophe we want to end it with an apostrophe. If a completed filepath contains a space, it can only be written in the cabal file if it is wrapped in apostrophes, thus we wrap it.