Skip to content

Commit ac63ae5

Browse files
committed
remove old completions code
1 parent f259e9f commit ac63ae5

File tree

7 files changed

+39
-378
lines changed

7 files changed

+39
-378
lines changed

haskell-language-server.cabal

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -340,12 +340,6 @@ library hls-cabal-project-plugin
340340
Ide.Plugin.CabalProject.Parse
341341
Ide.Plugin.CabalProject.Diagnostics
342342
Ide.Plugin.CabalProject.Types
343-
Ide.Plugin.CabalProject.Completion.Completions
344-
Ide.Plugin.CabalProject.Completion.Completer.Simple
345-
Ide.Plugin.CabalProject.Completion.Completer.Types
346-
Ide.Plugin.CabalProject.Completion.CabalProjectFields
347-
Ide.Plugin.CabalProject.Completion.Data
348-
349343

350344
build-depends:
351345
, bytestring
@@ -378,7 +372,6 @@ library hls-cabal-project-plugin
378372
, base16-bytestring
379373
, cryptohash-sha1
380374

381-
382375
hs-source-dirs: plugins/hls-cabal-project-plugin/src
383376

384377
test-suite hls-cabal-project-plugin-tests
@@ -404,7 +397,6 @@ test-suite hls-cabal-project-plugin-tests
404397
, hls-plugin-api
405398
, cabal-install
406399

407-
408400
-----------------------------
409401
-- class plugin
410402
-----------------------------

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject.hs

Lines changed: 39 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -9,63 +9,56 @@ module Ide.Plugin.CabalProject where
99

1010
import Control.Concurrent.Strict
1111
import Control.DeepSeq
12-
import Control.Lens ((^.))
12+
import Control.Lens ((^.))
1313
import Control.Monad.Extra
1414
import Control.Monad.IO.Class
15-
import Control.Monad.Trans.Class (lift)
16-
import Control.Monad.Trans.Maybe (runMaybeT)
17-
import qualified Data.ByteString as BS
15+
import Control.Monad.Trans.Class (lift)
16+
import Control.Monad.Trans.Maybe (runMaybeT)
17+
import qualified Data.ByteString as BS
1818
import Data.Hashable
19-
import Data.HashMap.Strict (HashMap,
20-
toList)
21-
import qualified Data.HashMap.Strict as HashMap
22-
import qualified Data.List as List
23-
import qualified Data.List.NonEmpty as NE
24-
import qualified Data.Maybe as Maybe
19+
import Data.HashMap.Strict (HashMap, toList)
20+
import qualified Data.HashMap.Strict as HashMap
21+
import qualified Data.List as List
22+
import qualified Data.List.NonEmpty as NE
23+
import qualified Data.Maybe as Maybe
2524
import Data.Proxy
26-
import qualified Data.Text ()
27-
import qualified Data.Text as T
28-
import qualified Data.Text.Encoding as Encoding
29-
import Data.Text.Utf16.Rope.Mixed as Rope
30-
import Development.IDE as D
31-
import Development.IDE.Core.FileStore (getVersionedTextDoc)
25+
import qualified Data.Text ()
26+
import qualified Data.Text as T
27+
import qualified Data.Text.Encoding as Encoding
28+
import Data.Text.Utf16.Rope.Mixed as Rope
29+
import Development.IDE as D
30+
import Development.IDE.Core.FileStore (getVersionedTextDoc)
3231
import Development.IDE.Core.PluginUtils
33-
import Development.IDE.Core.Shake (restartShakeSession)
34-
import qualified Development.IDE.Core.Shake as Shake
35-
import Development.IDE.Graph (Key,
36-
alwaysRerun)
37-
import Development.IDE.LSP.HoverDefinition (foundHover)
38-
import qualified Development.IDE.Plugin.Completions.Logic as Ghcide
39-
import Development.IDE.Types.Shake (toKey)
40-
import qualified Distribution.CabalSpecVersion as Cabal
41-
import qualified Distribution.Fields as Syntax
42-
import Distribution.Package (Dependency)
43-
import Distribution.PackageDescription (allBuildDepends,
44-
depPkgName,
45-
unPackageName)
46-
import Distribution.PackageDescription.Configuration (flattenPackageDescription)
32+
import Development.IDE.Core.Shake (restartShakeSession)
33+
import qualified Development.IDE.Core.Shake as Shake
34+
import Development.IDE.Graph (Key,
35+
alwaysRerun)
36+
import Development.IDE.LSP.HoverDefinition (foundHover)
37+
import qualified Development.IDE.Plugin.Completions.Logic as Ghcide
38+
import Development.IDE.Types.Shake (toKey)
39+
import qualified Distribution.CabalSpecVersion as Cabal
40+
import qualified Distribution.Fields as Syntax
41+
import Distribution.Package (Dependency)
42+
import Distribution.PackageDescription (allBuildDepends,
43+
depPkgName,
44+
unPackageName)
45+
import Distribution.PackageDescription.Configuration (flattenPackageDescription)
4746
import Distribution.Parsec.Error
48-
import qualified Distribution.Parsec.Position as Syntax
47+
import qualified Distribution.Parsec.Position as Syntax
4948
import GHC.Generics
50-
import Ide.Plugin.Cabal.Completion.CabalFields as CabalFields
51-
import qualified Ide.Plugin.Cabal.Completion.Completer.Types as CompleterTypes
52-
import qualified Ide.Plugin.Cabal.Completion.Data as Data
53-
import qualified Ide.Plugin.Cabal.Completion.Types as CTypes
54-
import Ide.Plugin.Cabal.Orphans ()
55-
import qualified Ide.Plugin.CabalProject.Completion.Completions as Completions
56-
import Ide.Plugin.CabalProject.Diagnostics as Diagnostics
57-
import Ide.Plugin.CabalProject.Parse as Parse
58-
import Ide.Plugin.CabalProject.Types as Types
49+
import Ide.Plugin.Cabal.Orphans ()
50+
import Ide.Plugin.CabalProject.Diagnostics as Diagnostics
51+
import Ide.Plugin.CabalProject.Parse as Parse
52+
import Ide.Plugin.CabalProject.Types as Types
5953
import Ide.Plugin.Error
6054
import Ide.Types
61-
import qualified Language.LSP.Protocol.Lens as JL
62-
import qualified Language.LSP.Protocol.Message as LSP
55+
import qualified Language.LSP.Protocol.Lens as JL
56+
import qualified Language.LSP.Protocol.Message as LSP
6357
import Language.LSP.Protocol.Types
64-
import qualified Language.LSP.VFS as VFS
65-
import System.FilePath (takeFileName)
58+
import qualified Language.LSP.VFS as VFS
59+
import System.FilePath (takeFileName)
6660
import Text.Regex.TDFA
6761

68-
6962
data Log
7063
= LogModificationTime NormalizedFilePath FileVersion
7164
| LogShake Shake.Log
@@ -74,8 +67,6 @@ data Log
7467
| LogDocSaved Uri
7568
| LogDocClosed Uri
7669
| LogFOI (HashMap NormalizedFilePath FileOfInterestStatus)
77-
| LogCompletionContext CTypes.Context Position
78-
| LogCompletions CTypes.Log
7970
deriving (Show)
8071

8172
instance Pretty Log where
@@ -100,9 +91,7 @@ descriptor recorder plId =
10091
{ pluginRules = cabalProjectRules recorder plId
10192
, pluginHandlers =
10293
mconcat
103-
[
104-
mkPluginHandler LSP.SMethod_TextDocumentCompletion $ completion recorder
105-
]
94+
[]
10695
, pluginNotificationHandlers =
10796
mconcat
10897
[ mkPluginNotificationHandler LSP.SMethod_TextDocumentDidOpen $
@@ -304,49 +293,3 @@ deleteFileOfInterest recorder state f = do
304293
return [toKey IsFileOfInterest f]
305294
where
306295
log' = logWith recorder
307-
308-
-- ----------------------------------------------------------------
309-
-- Completion
310-
-- ----------------------------------------------------------------
311-
312-
completion :: Recorder (WithPriority Log) -> PluginMethodHandler IdeState 'LSP.Method_TextDocumentCompletion
313-
completion recorder ide _ complParams = do
314-
let TextDocumentIdentifier uri = complParams ^. JL.textDocument
315-
position = complParams ^. JL.position
316-
mContents <- liftIO $ runAction "cabal-project-plugin.getUriContents" ide $ getUriContents $ toNormalizedUri uri
317-
case (,) <$> mContents <*> uriToFilePath' uri of
318-
Just (cnts, path) -> do
319-
-- We decide on `useWithStale` here, since `useWithStaleFast` often leads to the wrong completions being suggested.
320-
-- In case it fails, we still will get some completion results instead of an error.
321-
mFields <- liftIO $ runAction "cabal-project-plugin.fields" ide $ useWithStale ParseCabalProjectFields $ toNormalizedFilePath path
322-
case mFields of
323-
Nothing ->
324-
pure . InR $ InR Null
325-
Just (fields, _) -> do
326-
let lspPrefInfo = Ghcide.getCompletionPrefixFromRope position cnts
327-
cabalPrefInfo = Completions.getCabalPrefixInfo path lspPrefInfo
328-
let res = computeCompletionsAt recorder ide cabalPrefInfo path fields
329-
liftIO $ fmap InL res
330-
Nothing -> pure . InR $ InR Null
331-
332-
computeCompletionsAt :: Recorder (WithPriority Log) -> IdeState -> CTypes.CabalPrefixInfo -> FilePath -> [Syntax.Field Syntax.Position] -> IO [CompletionItem]
333-
computeCompletionsAt recorder ide prefInfo fp fields = do
334-
runMaybeT (context fields) >>= \case
335-
Nothing -> pure []
336-
Just ctx -> do
337-
logWith recorder Debug $ LogCompletionContext ctx pos
338-
let completer = Completions.contextToCompleter ctx
339-
let completerData = CompleterTypes.CompleterData
340-
{
341-
cabalPrefixInfo = prefInfo
342-
, stanzaName =
343-
case fst ctx of
344-
CTypes.Stanza _ name -> name
345-
_ -> Nothing
346-
}
347-
completions <- completer completerRecorder completerData
348-
pure completions
349-
where
350-
pos = CTypes.completionCursorPosition prefInfo
351-
context fields = Completions.getContext completerRecorder prefInfo fields
352-
completerRecorder = cmapWithPrio LogCompletions recorder

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject/Completion/CabalProjectFields.hs

Lines changed: 0 additions & 7 deletions
This file was deleted.

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject/Completion/Completer/Simple.hs

Lines changed: 0 additions & 3 deletions
This file was deleted.

plugins/hls-cabal-project-plugin/src/Ide/Plugin/CabalProject/Completion/Completer/Types.hs

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)