@@ -6,13 +6,11 @@
66#include "ghc-api-version.h"
77
88-- | Go to the definition of a variable.
9−module Development.IDE.Plugin.CodeAction
10− ( setHandlersCodeAction
11− , setHandlersCodeLens
12− ) where
9+module Development.IDE.Plugin.CodeAction(plugin) where
1310
1411import Language.Haskell.LSP.Types
1512import Control.Monad (join)
13+import Development.IDE.Plugin
1614import Development.IDE.GHC.Compat
1715import Development.IDE.Core.Rules
1816import Development.IDE.Core.RuleTypes
@@ -38,13 +36,18 @@ import Text.Regex.TDFA ((=~), (=~~))
3836import Text.Regex.TDFA.Text()
3937import Outputable (ppr, showSDocUnsafe)
4038
39+plugin :: Plugin
40+plugin = codeActionPlugin codeAction <> Plugin mempty setHandlersCodeLens
41+
4142-- | Generate code actions.
4243codeAction
4344 :: LSP.LspFuncs ()
4445 -> IdeState
45− -> CodeActionParams
46− -> IO (List CAResult)
47−codeAction lsp state CodeActionParams{_textDocument=TextDocumentIdentifier uri,_context=CodeActionContext{_diagnostics=List xs}} = do
46+ -> TextDocumentIdentifier
47+ -> Range
48+ -> CodeActionContext
49+ -> IO [CAResult]
50+codeAction lsp state (TextDocumentIdentifier uri) _range CodeActionContext{_diagnostics=List xs} = do
4851 -- disable logging as its quite verbose
4952 -- logInfo (ideLogger ide) $ T.pack $ "Code action req: " ++ show arg
5053 contents <- LSP.getVirtualFileFunc lsp $ toNormalizedUri uri
@@ -52,7 +55,7 @@ codeAction lsp state CodeActionParams{_textDocument=TextDocumentIdentifier uri,_
5255 (ideOptions, parsedModule) <- runAction state $
5356 (,) <$> getIdeOptions
5457 <*> (getParsedModule . toNormalizedFilePath) `traverse` uriToFilePath uri
55− pure $ List
58+ pure
5659 [ CACodeAction $ CodeAction title (Just CodeActionQuickFix) (Just $ List [x]) (Just edit) Nothing
5760 | x <- xs, (title, tedit) <- suggestAction ideOptions ( join parsedModule ) text x
5861 , let edit = WorkspaceEdit (Just $ Map.singleton uri $ List tedit) Nothing
@@ -439,11 +442,6 @@ matchRegex message regex = case unifySpaces message =~~ regex of
439442 Just (_ :: T.Text, _ :: T.Text, _ :: T.Text, bindings) -> Just bindings
440443 Nothing -> Nothing
441444
442−setHandlersCodeAction :: PartialHandlers
443−setHandlersCodeAction = PartialHandlers $ \WithMessage{..} x -> return x{
444− LSP.codeActionHandler = withResponse RspCodeAction codeAction
445− }
446−
447445setHandlersCodeLens :: PartialHandlers
448446setHandlersCodeLens = PartialHandlers $ \WithMessage{..} x -> return x{
449447 LSP.codeLensHandler = withResponse RspCodeLens codeLens,