Safe Haskell | Safe-Inferred |
---|---|
Language | GHC2021 |
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
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 Source #
Instances
Generic ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types type Rep ParseCabalFile :: Type -> Type # from :: ParseCabalFile -> Rep ParseCabalFile x # to :: Rep ParseCabalFile x -> ParseCabalFile # | |
Show ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types showsPrec :: Int -> ParseCabalFile -> ShowS # show :: ParseCabalFile -> String # showList :: [ParseCabalFile] -> ShowS # | |
NFData ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types rnf :: ParseCabalFile -> () # | |
Eq ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types (==) :: ParseCabalFile -> ParseCabalFile -> Bool # (/=) :: ParseCabalFile -> ParseCabalFile -> Bool # | |
Hashable ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types hashWithSalt :: Int -> ParseCabalFile -> Int # hash :: ParseCabalFile -> Int # | |
type Rep ParseCabalFile Source # | |
type RuleResult ParseCabalFile Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types |
data ParseCabalFields Source #
Instances
type Context = (StanzaContext, FieldContext) Source #
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 Source #
Context inside a cabal file. Used to decide which keywords to suggest.
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 Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types readsPrec :: Int -> ReadS StanzaContext # readList :: ReadS [StanzaContext] # | |
Show StanzaContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types showsPrec :: Int -> StanzaContext -> ShowS # show :: StanzaContext -> String # showList :: [StanzaContext] -> ShowS # | |
Eq StanzaContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types (==) :: StanzaContext -> StanzaContext -> Bool # (/=) :: StanzaContext -> StanzaContext -> Bool # | |
Pretty StanzaContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types pretty :: StanzaContext -> Doc ann # prettyList :: [StanzaContext] -> Doc ann # |
data FieldContext Source #
Keyword context in a cabal file.
Used to decide whether to suggest values or keywords.
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 Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types readsPrec :: Int -> ReadS FieldContext # readList :: ReadS [FieldContext] # | |
Show FieldContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types showsPrec :: Int -> FieldContext -> ShowS # show :: FieldContext -> String # showList :: [FieldContext] -> ShowS # | |
Eq FieldContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types (==) :: FieldContext -> FieldContext -> Bool # (/=) :: FieldContext -> FieldContext -> Bool # | |
Pretty FieldContext Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types pretty :: FieldContext -> Doc ann # prettyList :: [FieldContext] -> Doc ann # |
type KeyWordName = Text Source #
type StanzaName = Text Source #
type StanzaType = Text Source #
data CabalPrefixInfo Source #
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.
CabalPrefixInfo | |
|
Instances
Show CabalPrefixInfo Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types showsPrec :: Int -> CabalPrefixInfo -> ShowS # show :: CabalPrefixInfo -> String # showList :: [CabalPrefixInfo] -> ShowS # | |
Eq CabalPrefixInfo Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types (==) :: CabalPrefixInfo -> CabalPrefixInfo -> Bool # (/=) :: CabalPrefixInfo -> CabalPrefixInfo -> Bool # |
data Apostrophe Source #
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.
Instances
Show Apostrophe Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types showsPrec :: Int -> Apostrophe -> ShowS # show :: Apostrophe -> String # showList :: [Apostrophe] -> ShowS # | |
Eq Apostrophe Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types (==) :: Apostrophe -> Apostrophe -> Bool # (/=) :: Apostrophe -> Apostrophe -> Bool # | |
Ord Apostrophe Source # | |
Defined in Ide.Plugin.Cabal.Completion.Types 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 Source #
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.