haskell-language-server-2.7.0.0: LSP server for GHC

Safe Haskell | None
Language | GHC2021

Ide.Plugin.Cabal.Completion.Types

Synopsis

- data Log
  - = LogFileSplitError Position
  - | LogUnknownKeyWordInContextError KeyWordName
  - | LogUnknownStanzaNameInContextError StanzaName
  - | LogFilePathCompleterIOError FilePath IOError
  - | LogUseWithStaleFastNoResult
  - | LogMapLookUpOfKnownKeyFailed Text
- data GetCabalDiagnostics = GetCabalDiagnostics
- 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 {
  - completionPrefix :: Text
  - isStringNotation :: Maybe Apostrophe
  - completionCursorPosition :: Position
  - completionRange :: Range
  - completionWorkingDir :: FilePath
  - completionFileName :: Text
  }
- data Apostrophe
  - = Surrounded
  - | LeftSide
- applyStringNotation :: Maybe Apostrophe -> Text -> Text

# 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 |

#### 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 GetCabalDiagnostics #

Constructors

GetCabalDiagnostics |

#### Instances

Instances details

Generic GetCabalDiagnostics # |

Instance details

Defined in Ide.Plugin.Cabal.Completion.Types

Associated Types

type Rep GetCabalDiagnostics |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types type Rep GetCabalDiagnostics = D1 ('MetaData "GetCabalDiagnostics" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.7.0.0-66RlyPzU4ubGBYtCTQ0jMu-hls-cabal-plugin" 'False) (C1 ('MetaCons "GetCabalDiagnostics" 'PrefixI 'False) (U1 :: Type -> Type))

Methods

from :: GetCabalDiagnostics -> Rep GetCabalDiagnostics x #

to :: Rep GetCabalDiagnostics x -> GetCabalDiagnostics #

Show GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> GetCabalDiagnostics -> ShowS # show :: GetCabalDiagnostics -> String # showList :: [GetCabalDiagnostics] -> ShowS #
NFData GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods rnf :: GetCabalDiagnostics -> () #
Eq GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: GetCabalDiagnostics -> GetCabalDiagnostics -> Bool # (/=) :: GetCabalDiagnostics -> GetCabalDiagnostics -> Bool #
Hashable GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods hashWithSalt :: Int -> GetCabalDiagnostics -> Int # hash :: GetCabalDiagnostics -> Int #
type Rep GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types type Rep GetCabalDiagnostics = D1 ('MetaData "GetCabalDiagnostics" "Ide.Plugin.Cabal.Completion.Types" "haskell-language-server-2.7.0.0-66RlyPzU4ubGBYtCTQ0jMu-hls-cabal-plugin" 'False) (C1 ('MetaCons "GetCabalDiagnostics" 'PrefixI 'False) (U1 :: Type -> Type))
type RuleResult GetCabalDiagnostics # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types type RuleResult GetCabalDiagnostics = GenericPackageDescription

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.

#### Instances

Instances details

Read StanzaContext # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods readsPrec :: Int -> ReadS StanzaContext # readList :: ReadS [StanzaContext] # readPrec :: ReadPrec StanzaContext # readListPrec :: ReadPrec [StanzaContext] #
Show StanzaContext # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> StanzaContext -> ShowS # show :: StanzaContext -> String # showList :: [StanzaContext] -> ShowS #
Eq StanzaContext # |
Instance details 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

Instances details

Read FieldContext # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods readsPrec :: Int -> ReadS FieldContext # readList :: ReadS [FieldContext] # readPrec :: ReadPrec FieldContext # readListPrec :: ReadPrec [FieldContext] #
Show FieldContext # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> FieldContext -> ShowS # show :: FieldContext -> String # showList :: [FieldContext] -> ShowS #
Eq FieldContext # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: FieldContext -> FieldContext -> Bool # (/=) :: FieldContext -> FieldContext -> Bool #

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

- completionPrefix :: Text

  text prefix to complete

- isStringNotation :: Maybe Apostrophe

  Did the completion happen in the context of a string notation, i.e. are there apostrophes around the item to be completed

- completionCursorPosition :: Position

  the current position of the cursor in the file

- completionRange :: Range

  range where completion is to be inserted

- completionWorkingDir :: FilePath

  directory of the handled cabal file

- completionFileName :: Text

  filename of the handled cabal file

#### Instances

Instances details

Show CabalPrefixInfo # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> CabalPrefixInfo -> ShowS # show :: CabalPrefixInfo -> String # showList :: [CabalPrefixInfo] -> ShowS #
Eq CabalPrefixInfo # |
Instance details 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

Instances details

Show Apostrophe # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods showsPrec :: Int -> Apostrophe -> ShowS # show :: Apostrophe -> String # showList :: [Apostrophe] -> ShowS #
Eq Apostrophe # |
Instance details Defined in Ide.Plugin.Cabal.Completion.Types Methods (==) :: Apostrophe -> Apostrophe -> Bool # (/=) :: Apostrophe -> Apostrophe -> Bool #
Ord Apostrophe # |
Instance details 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.