hls-plugin-api-2.6.0.0: src/Ide/Plugin/HandleRequestTypes.hs
{-# LANGUAGE OverloadedStrings #-}
module Ide.Plugin.HandleRequestTypes where
import Data.Text
import Prettyprinter
-- | Reasons why a plugin could reject a specific request.
data RejectionReason =
-- | The resolve request is not meant for this plugin or handler. The text
-- field should contain the identifier for the plugin who owns this resolve
-- request.
NotResolveOwner Text
-- | The plugin is disabled globally in the users config.
| DisabledGlobally
-- | The feature in the plugin that responds to this request is disabled in
-- the users config
| FeatureDisabled
-- | This plugin is not the formatting provider selected in the users config.
-- The text should be the formatting provider in your config.
| NotFormattingProvider Text
-- | This plugin does not support the file type. The text field here should
-- contain the filetype of the rejected request.
| DoesNotSupportFileType Text
deriving (Eq)
-- | Whether a plugin will handle a request or not.
data HandleRequestResult = HandlesRequest | DoesNotHandleRequest RejectionReason
deriving (Eq)
instance Pretty HandleRequestResult where
pretty HandlesRequest = "handles this request"
pretty (DoesNotHandleRequest reason) = pretty reason
instance Pretty RejectionReason where
pretty (NotResolveOwner s) = "does not handle resolve requests for " <> pretty s <> ")."
pretty DisabledGlobally = "is disabled globally in your config."
pretty FeatureDisabled = "'s feature that handles this request is disabled in your config."
pretty (NotFormattingProvider s) = "is not the formatting provider ("<> pretty s<>") you chose in your config."
pretty (DoesNotSupportFileType s) = "does not support " <> pretty s <> " filetypes)."
-- We always want to keep the leftmost disabled reason
instance Semigroup HandleRequestResult where
HandlesRequest <> HandlesRequest = HandlesRequest
DoesNotHandleRequest r <> _ = DoesNotHandleRequest r
_ <> DoesNotHandleRequest r = DoesNotHandleRequest r