haskell-language-server-2.9.0.0: LSP server for GHC
Safe HaskellNone
LanguageGHC2021

Ide.Plugin.Cabal.Completion.Types

Synopsis

Documentation

data Log #

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 

Instances

Instances details
Show Log # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Methods

showsPrec :: Int -> Log -> ShowS #

show :: Log -> String #

showList :: [Log] -> ShowS #

Pretty Log # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Methods

pretty :: Log -> Doc ann #

prettyList :: [Log] -> Doc ann #

data ParseCabalFile #

Constructors

ParseCabalFile 

Instances

Instances details
NFData ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Methods

rnf :: ParseCabalFile -> () #

Generic ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Associated Types

type Rep ParseCabalFile 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFile = D1 ('MetaData "ParseCabalFile" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.9.0.0-1CWKwipGvuW3wSYGILIGu2-hls-cabal-plugin" 'False) (C1 ('MetaCons "ParseCabalFile" 'PrefixI 'False) (U1 :: Type -> Type))
Show ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Eq ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Hashable ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFile = D1 ('MetaData "ParseCabalFile" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.9.0.0-1CWKwipGvuW3wSYGILIGu2-hls-cabal-plugin" 'False) (C1 ('MetaCons "ParseCabalFile" 'PrefixI 'False) (U1 :: Type -> Type))
type RuleResult ParseCabalFile # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

data ParseCabalFields #

Constructors

ParseCabalFields 

Instances

Instances details
NFData ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Methods

rnf :: ParseCabalFields -> () #

Generic ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Associated Types

type Rep ParseCabalFields 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFields = D1 ('MetaData "ParseCabalFields" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.9.0.0-1CWKwipGvuW3wSYGILIGu2-hls-cabal-plugin" 'False) (C1 ('MetaCons "ParseCabalFields" 'PrefixI 'False) (U1 :: Type -> Type))
Show ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Eq ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Hashable ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFields # 
Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

type Rep ParseCabalFields = D1 ('MetaData "ParseCabalFields" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.9.0.0-1CWKwipGvuW3wSYGILIGu2-hls-cabal-plugin" 'False) (C1 ('MetaCons "ParseCabalFields" 'PrefixI 'False) (U1 :: Type -> Type))
type RuleResult ParseCabalFields # 
Instance details

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 author

Stanza !StanzaType !(Maybe StanzaName)

Nested context in a cabal file, such as library.

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.

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

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

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 

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.

lspPositionToCabalPosition :: Position -> Position #

Convert an LSP Position to a Position.

Cabal Positions start their indexing at 1 while LSP starts at 0. This helper makes sure, the translation is done properly.