Skip to content

Commit 12cbc38

Browse files
committed
Add supported cabal-versions to the error message
1 parent 5d7eb82 commit 12cbc38

File tree

2 files changed

+23
-8
lines changed

2 files changed

+23
-8
lines changed

Diff for: plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal.hs

+19-7
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ import qualified Data.ByteString as BS
1717
import Data.Hashable
1818
import Data.HashMap.Strict (HashMap)
1919
import qualified Data.HashMap.Strict as HashMap
20+
import qualified Data.List as List
2021
import qualified Data.List.NonEmpty as NE
2122
import qualified Data.Maybe as Maybe
23+
import qualified Data.Text ()
2224
import qualified Data.Text as T
2325
import qualified Data.Text.Encoding as Encoding
2426
import Data.Text.Utf16.Rope.Mixed as Rope
@@ -33,17 +35,21 @@ import Development.IDE.Graph (Key,
3335
import Development.IDE.LSP.HoverDefinition (foundHover)
3436
import qualified Development.IDE.Plugin.Completions.Logic as Ghcide
3537
import Development.IDE.Types.Shake (toKey)
38+
import qualified Distribution.CabalSpecVersion as Cabal
3639
import qualified Distribution.Fields as Syntax
3740
import Distribution.Package (Dependency)
3841
import Distribution.PackageDescription (allBuildDepends,
3942
depPkgName,
4043
unPackageName)
4144
import Distribution.PackageDescription.Configuration (flattenPackageDescription)
45+
import Distribution.Parsec.Error
4246
import qualified Distribution.Parsec.Position as Syntax
4347
import GHC.Generics
48+
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
4449
import Ide.Plugin.Cabal.Completion.CabalFields as CabalFields
4550
import qualified Ide.Plugin.Cabal.Completion.Completer.Types as CompleterTypes
4651
import qualified Ide.Plugin.Cabal.Completion.Completions as Completions
52+
import qualified Ide.Plugin.Cabal.Completion.Data as Data
4753
import Ide.Plugin.Cabal.Completion.Types (ParseCabalCommonSections (ParseCabalCommonSections),
4854
ParseCabalFields (..),
4955
ParseCabalFile (..))
@@ -63,11 +69,6 @@ import Language.LSP.Protocol.Types
6369
import qualified Language.LSP.VFS as VFS
6470
import Text.Regex.TDFA
6571

66-
67-
import qualified Data.Text ()
68-
import Distribution.Parsec.Error
69-
import qualified Ide.Plugin.Cabal.CabalAdd as CabalAdd
70-
7172
data Log
7273
= LogModificationTime NormalizedFilePath FileVersion
7374
| LogShake Shake.Log
@@ -252,13 +253,24 @@ cabalRules recorder plId = do
252253
-- We don't support the cabal version, this should not be an error, as the
253254
-- user did not do anything wrong. Instead we cast it to a warning
254255
regex = "Unsupported cabal-version [0-9]+.[0-9]*"
255-
unsupportedCabalHelpText = "\nThe used cabal version is not fully supported by hls. This means that some functionallity might not work as expected.\nIf you face any issues try to downgrade to a supported cabal version."
256+
unsupportedCabalHelpText = unlines
257+
[ "The used cabal version is not fully supported by HLS. This means that some functionality might not work as expected."
258+
, "If you face any issues try to downgrade to a supported cabal version."
259+
, ""
260+
, "Supported versions are: " <>
261+
List.intercalate ", "
262+
(fmap Cabal.showCabalSpecVersion Data.supportedCabalVersions)
263+
]
256264
errorDiags =
257265
NE.toList $
258266
NE.map
259267
( \pe@(PError pos text) ->
260268
if text =~ regex
261-
then Diagnostics.warningDiagnostic file (Syntax.PWarning Syntax.PWTOther pos (text <> unsupportedCabalHelpText))
269+
then Diagnostics.warningDiagnostic file (Syntax.PWarning Syntax.PWTOther pos $
270+
unlines
271+
[ text
272+
, unsupportedCabalHelpText
273+
])
262274
else Diagnostics.errorDiagnostic file pe
263275
)
264276
pErrorNE

Diff for: plugins/hls-cabal-plugin/src/Ide/Plugin/Cabal/Completion/Data.hs

+4-1
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ import Ide.Plugin.Cabal.LicenseSuggest (licenseNames)
2323
-- Completion Data
2424
-- ----------------------------------------------------------------
2525

26+
supportedCabalVersions :: [CabalSpecVersion]
27+
supportedCabalVersions = [CabalSpecV2_2 .. maxBound]
28+
2629
-- | Keyword for cabal version; required to be the top line in a cabal file
2730
cabalVersionKeyword :: Map KeyWordName Completer
2831
cabalVersionKeyword =
2932
Map.singleton "cabal-version:" $
3033
constantCompleter $
3134
-- We only suggest cabal versions newer than 2.2
3235
-- since we don't recommend using older ones.
33-
map (T.pack . showCabalSpecVersion) [CabalSpecV2_2 .. maxBound]
36+
map (T.pack . showCabalSpecVersion) supportedCabalVersions
3437

3538
-- | Top level keywords of a cabal file.
3639
--

0 commit comments

Comments
 (0)