@@ -9,7 +9,6 @@ module Development.IDE.Plugin.Completions.Logic (
99 CachedCompletions
1010, cacheDataProducer
1111, localCompletionsForParsedModule
12- , WithSnippets (.. )
1312, getCompletions
1413) where
1514
@@ -56,8 +55,7 @@ import Development.IDE.Types.Options
5655import GhcPlugins (flLabel , unpackFS )
5756import Ide.PluginUtils (mkLspCommand )
5857import Ide.Types (CommandId (.. ),
59- PluginId ,
60- WithSnippets (.. ))
58+ PluginId )
6159import Language.LSP.Types
6260import Language.LSP.Types.Capabilities
6361import qualified Language.LSP.VFS as VFS
@@ -465,13 +463,17 @@ findRecordCompl _ _ _ _ = []
465463ppr :: Outputable a => a -> T. Text
466464ppr = T. pack . prettyPrint
467465
468- toggleSnippets :: ClientCapabilities -> WithSnippets -> CompletionItem -> CompletionItem
469- toggleSnippets ClientCapabilities {_textDocument} (WithSnippets with) =
466+ toggleSnippets :: ClientCapabilities -> CompletionsConfig -> CompletionItem -> CompletionItem
467+ toggleSnippets ClientCapabilities {_textDocument} (CompletionsConfig with _ ) =
470468 removeSnippetsWhen (not $ with && supported)
471469 where
472470 supported =
473471 Just True == (_textDocument >>= _completion >>= _completionItem >>= _snippetSupport)
474472
473+ toggleAutoExtend :: CompletionsConfig -> CompItem -> CompItem
474+ toggleAutoExtend (CompletionsConfig _ False ) x = x {additionalTextEdits = Nothing }
475+ toggleAutoExtend _ x = x
476+
475477removeSnippetsWhen :: Bool -> CompletionItem -> CompletionItem
476478removeSnippetsWhen condition x =
477479 if condition
@@ -491,10 +493,10 @@ getCompletions
491493 -> (Bindings , PositionMapping )
492494 -> VFS. PosPrefixInfo
493495 -> ClientCapabilities
494- -> WithSnippets
496+ -> CompletionsConfig
495497 -> IO [CompletionItem ]
496498getCompletions plId ideOpts CC {allModNamesAsNS, unqualCompls, qualCompls, importableModules}
497- maybe_parsed (localBindings, bmapping) prefixInfo caps withSnippets = do
499+ maybe_parsed (localBindings, bmapping) prefixInfo caps config = do
498500 let VFS. PosPrefixInfo { fullLine, prefixModule, prefixText } = prefixInfo
499501 enteredQual = if T. null prefixModule then " " else prefixModule <> " ."
500502 fullPrefix = enteredQual <> prefixText
@@ -530,7 +532,7 @@ getCompletions plId ideOpts CC {allModNamesAsNS, unqualCompls, qualCompls, impor
530532 Just ValueContext -> filter (not . isTypeCompl) compls
531533 Just _ -> filter (not . isTypeCompl) compls
532534 -- Add whether the text to insert has backticks
533- ctxCompls = map (\ comp -> comp { isInfix = infixCompls }) ctxCompls'
535+ ctxCompls = map (\ comp -> toggleAutoExtend config $ comp { isInfix = infixCompls }) ctxCompls'
534536
535537 infixCompls :: Maybe Backtick
536538 infixCompls = isUsedAsInfix fullLine prefixModule prefixText pos
@@ -562,7 +564,7 @@ getCompletions plId ideOpts CC {allModNamesAsNS, unqualCompls, qualCompls, impor
562564 ]
563565
564566 filtListWithSnippet f list suffix =
565- [ toggleSnippets caps withSnippets (f label (snippet <> suffix))
567+ [ toggleSnippets caps config (f label (snippet <> suffix))
566568 | (snippet, label) <- list
567569 , Fuzzy. test fullPrefix label
568570 ]
@@ -596,7 +598,7 @@ getCompletions plId ideOpts CC {allModNamesAsNS, unqualCompls, qualCompls, impor
596598 compls <- mapM (mkCompl plId ideOpts) uniqueFiltCompls
597599 return $ filtModNameCompls
598600 ++ filtKeywordCompls
599- ++ map ( toggleSnippets caps withSnippets ) compls
601+ ++ map (toggleSnippets caps config ) compls
600602
601603
602604-- ---------------------------------------------------------------------
0 commit comments