Safe Haskell | None |
---|---|
Language | GHC2021 |
Ide.Plugin.Cabal.Completion.Types
Synopsis
- data Log
- data ParseCabalFile = ParseCabalFile
- data ParseCabalFields = ParseCabalFields
- type Context = (StanzaContext, FieldContext)
- data StanzaContext
- = TopLevel
- | Stanza !StanzaType !(Maybe StanzaName)
- data FieldContext
- = KeyWord !KeyWordName
- | None
- type KeyWordName = Text
- type StanzaName = Text
- type StanzaType = Text
- data CabalPrefixInfo = CabalPrefixInfo {}
- data Apostrophe
- applyStringNotation :: Maybe Apostrophe -> Text -> Text
- lspPositionToCabalPosition :: Position -> Position
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 | |
LogCompletionContext Context |
data ParseCabalFile #
Constructors
ParseCabalFile |
Instances
NFData ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods rnf :: ParseCabalFile -> () # | |||||
Generic ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Associated Types
Methods from :: ParseCabalFile -> Rep ParseCabalFile x # to :: Rep ParseCabalFile x -> ParseCabalFile # | |||||
Show ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> ParseCabalFile -> ShowS # show :: ParseCabalFile -> String # showList :: [ParseCabalFile] -> ShowS # | |||||
Eq ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: ParseCabalFile -> ParseCabalFile -> Bool # (/=) :: ParseCabalFile -> ParseCabalFile -> Bool # | |||||
Hashable ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types | |||||
type Rep ParseCabalFile # | |||||
type RuleResult ParseCabalFile # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types |
data ParseCabalFields #
Constructors
ParseCabalFields |
Instances
NFData ParseCabalFields # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods rnf :: ParseCabalFields -> () # | |||||
Generic ParseCabalFields # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Associated Types
Methods from :: ParseCabalFields -> Rep ParseCabalFields x # to :: Rep ParseCabalFields x -> ParseCabalFields # | |||||
Show ParseCabalFields # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> ParseCabalFields -> ShowS # show :: ParseCabalFields -> String # showList :: [ParseCabalFields] -> ShowS # | |||||
Eq ParseCabalFields # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: ParseCabalFields -> ParseCabalFields -> Bool # (/=) :: ParseCabalFields -> ParseCabalFields -> Bool # | |||||
Hashable ParseCabalFields # | |||||
Defined in Ide.Plugin.Cabal.Completion.Types | |||||
type Rep ParseCabalFields # | |||||
type RuleResult ParseCabalFields # | |||||
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] # | |
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 # | |
Pretty StanzaContext # | |
Defined in Ide.Plugin.Cabal.Completion.Types |
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] # | |
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 | |
Pretty 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.