packages feed

Cabal revisions of haskell-language-server-2.14.0.0

Hackage metadata revisions edit the .cabal file after upload; each diff below is one revision.

revision 1
-cabal-version:      3.4-category:           Development-name:               haskell-language-server-version:            2.14.0.0-synopsis:           LSP server for GHC-description:-  Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>--homepage:           https://github.com/haskell/haskell-language-server#readme-bug-reports:        https://github.com/haskell/haskell-language-server/issues-author:             The Haskell IDE Team-maintainer:         alan.zimm@gmail.com-copyright:          The Haskell IDE Team-license:            Apache-2.0-license-file:       LICENSE-build-type:         Simple-tested-with:        GHC == {9.14.1, 9.12.2, 9.10.3, 9.8.4, 9.6.7}-extra-source-files:-  README.md-  ChangeLog.md-  test/testdata/**/*.project-  test/testdata/**/*.cabal-  test/testdata/**/*.yaml-  test/testdata/**/*.hs-  test/testdata/**/*.json--  -- These globs should only match test/testdata-  plugins/**/*.project-  plugins/**/*.expected-  plugins/**/*.cabal-  plugins/**/*.yaml-  plugins/**/*.txt-  plugins/**/*.hs--  ghcide-test/data/**/*.cabal-  ghcide-test/data/**/*.hs-  ghcide-test/data/**/*.hs-boot-  ghcide-test/data/**/*.project-  ghcide-test/data/**/*.yaml--  bindist/wrapper.in--source-repository head-  type:     git-  location: https://github.com/haskell/haskell-language-server--common defaults-  default-language: GHC2021-  -- Should have been in GHC2021, an oversight-  default-extensions: ExplicitNamespaces-  build-depends:-    , base >=4.12 && <5--common test-defaults-  ghc-options: -threaded -rtsopts -with-rtsopts=-N-  if impl(ghc >= 9.8)-    -- We allow using partial functions in tests-    ghc-options: -Wno-x-partial---- Default warnings in HLS-common warnings-  ghc-options: -Wall-               -Wredundant-constraints-               -Wunused-packages-               -Wno-name-shadowing-               -Wno-unticked-promoted-constructors--flag pedantic-  description: Enable -Werror-  default:     False-  manual:      True---- Allow compiling in pedantic mode-common pedantic-  if flag(pedantic)-    ghc-options:-      -Werror-      -- Note [unused-packages]-      -- ~~~~~~~~~~~~~~~~~~~~~~-      -- Some packages need CPP conditioned on MIN_VERSION_ghc(x,y,z).-      -- MIN_VERSION_<pkg> is CPP macro that cabal defines only when <pkg> is declared as a dependency.-      -- But -Wunused-packages still reports it as unused dependency if it's not imported.-      -- For packages with such "unused" dependencies we demote -Wunused-packages error-      -- (enabled by --flag=pedantic) to warning via -Wwarn=unused-packages.-      -Wwarn=unused-packages---- Plugin flags are designed for 'cabal install haskell-language-server':--- - Bulk flags should be default:False--- - Individual flags should be default:True---- The intent of this flag is being able to keep the ghc condition for hackage--- but skip it via flags in cabal.project as plugins for new ghcs usually--- are buildable using cabal.project tweaks-flag ignore-plugins-ghc-bounds-  description: Force the inclusion of plugins even if they are not buildable by default with a specific ghc version-  default:     False-  manual:      True--flag dynamic-  description: Build with the dyn rts-  default:     True-  manual:      True-------------------------------------------------------------- PLUGINS-------------------------------------------------------------------------------------------- cabal-fmt plugin--------------------------------flag cabalfmt-  description: Enable cabal-fmt plugin-  default:     True-  manual:      True--common cabalfmt-  if flag(cabalfmt) && flag(cabal)-    build-depends: haskell-language-server:hls-cabal-fmt-plugin-    cpp-options: -Dhls_cabalfmt--flag isolateCabalfmtTests-  description: Should tests search for 'cabal-fmt' on the $PATH or shall we install it via build-tool-depends?-  -- By default, search on the PATH-  default:     False-  manual:      True--library hls-cabal-fmt-plugin-  import:           defaults, pedantic, warnings-  if !flag(cabalfmt) || !flag(cabal)-    buildable: False-  exposed-modules:  Ide.Plugin.CabalFmt-  hs-source-dirs:   plugins/hls-cabal-fmt-plugin/src-  build-depends:-    , directory-    , filepath-    , ghcide          == 2.14.0.0-    , hls-plugin-api  == 2.14.0.0-    , lens-    , lsp-types-    , mtl-    , process-extras-    , text---- The `hls-cabal-plugin` is needed for tests, as we need to install notification handlers-test-suite hls-cabal-fmt-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(cabalfmt) || !flag(cabal)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-cabal-fmt-plugin/test-  main-is:          Main.hs-  build-depends:-    , directory-    , filepath-    , haskell-language-server:hls-cabal-plugin-    , haskell-language-server:hls-cabal-fmt-plugin-    , hls-plugin-api        == 2.14.0.0-    , hls-test-utils        == 2.14.0.0--  if flag(isolateCabalfmtTests)-    build-tool-depends: cabal-fmt:cabal-fmt ^>=0.1.12-    cpp-options: -Dhls_isolate_cabalfmt_tests---------------------------------- cabal-gild plugin--------------------------------flag cabalgild-  description: Enable cabal-gild plugin-  default:     True-  manual:      True--common cabalgild-  if flag(cabalgild) && flag(cabal)-    build-depends: haskell-language-server:hls-cabal-gild-plugin-    cpp-options: -Dhls_cabalgild--flag isolateCabalGildTests-  description: Should tests search for 'cabal-gild' on the $PATH or shall we install it via build-tool-depends?-  -- By default, search on the PATH-  default:     False-  manual:      True--library hls-cabal-gild-plugin-  import:           defaults, pedantic, warnings-  if !flag(cabalgild) || !flag(cabal)-    buildable: False-  exposed-modules:  Ide.Plugin.CabalGild-  hs-source-dirs:   plugins/hls-cabal-gild-plugin/src-  build-depends:-    , directory-    , filepath-    , ghcide          == 2.14.0.0-    , hls-plugin-api  == 2.14.0.0-    , lsp-types-    , text-    , mtl-    , process-extras---- The `hls-cabal-plugin` is needed for tests, as we need to install notification handlers-test-suite hls-cabal-gild-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(cabalgild) || !flag(cabal)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-cabal-gild-plugin/test-  main-is:          Main.hs-  build-depends:-    , directory-    , filepath-    , haskell-language-server:hls-cabal-plugin-    , haskell-language-server:hls-cabal-gild-plugin-    , hls-plugin-api        == 2.14.0.0-    , hls-test-utils        == 2.14.0.0--  if flag(isolateCabalGildTests)-    -- https://github.com/tfausak/cabal-gild/issues/89-    build-tool-depends: cabal-gild:cabal-gild >= 1.3 && < 1.3.2-    cpp-options: -Dhls_isolate_cabalgild_tests---------------------------------- cabal plugin--------------------------------flag cabal-  description: Enable cabal plugin-  default:     True-  manual:      True--common cabal-  if flag(cabal)-    build-depends: haskell-language-server:hls-cabal-plugin-    cpp-options: -Dhls_cabal--library hls-cabal-plugin-  import:           defaults, pedantic, warnings-  if !flag(cabal)-    buildable: False-  exposed-modules:-    Ide.Plugin.Cabal-    Ide.Plugin.Cabal.Diagnostics-    Ide.Plugin.Cabal.Completion.CabalFields-    Ide.Plugin.Cabal.Completion.Completer.FilePath-    Ide.Plugin.Cabal.Completion.Completer.Module-    Ide.Plugin.Cabal.Completion.Completer.Paths-    Ide.Plugin.Cabal.Completion.Completer.Simple-    Ide.Plugin.Cabal.Completion.Completer.Snippet-    Ide.Plugin.Cabal.Completion.Completer.Types-    Ide.Plugin.Cabal.Completion.Completions-    Ide.Plugin.Cabal.Completion.Data-    Ide.Plugin.Cabal.Completion.Types-    Ide.Plugin.Cabal.Definition-    Ide.Plugin.Cabal.FieldSuggest-    Ide.Plugin.Cabal.Files-    Ide.Plugin.Cabal.OfInterest-    Ide.Plugin.Cabal.LicenseSuggest-    Ide.Plugin.Cabal.Rules-    Ide.Plugin.Cabal.CabalAdd.Command-    Ide.Plugin.Cabal.CabalAdd.CodeAction-    Ide.Plugin.Cabal.CabalAdd.Types-    Ide.Plugin.Cabal.Orphans-    Ide.Plugin.Cabal.Outline-    Ide.Plugin.Cabal.Parse---  build-depends:-    , bytestring-    , Cabal-syntax          >= 3.7-    , containers-    , deepseq-    , directory-    , filepath-    , extra                 >=1.7.4-    , ghcide                == 2.14.0.0-    , hashable-    , hls-plugin-api        == 2.14.0.0-    , hls-graph             == 2.14.0.0-    , lens-    , lsp                   ^>=2.8-    , lsp-types             ^>=2.4-    , mtl-    , regex-tdfa            ^>=1.3.1-    , text-    , text-rope-    , transformers-    , unordered-containers  >=0.2.10.0-    , containers-    , cabal-add             ^>=0.2-    , aeson-    , Cabal-    , pretty--  hs-source-dirs:   plugins/hls-cabal-plugin/src--test-suite hls-cabal-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(cabal)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-cabal-plugin/test-  main-is:          Main.hs-  other-modules:-    CabalAdd-    Completer-    Context-    Definition-    Outline-    Utils-  build-depends:-    , bytestring-    , Cabal-syntax          >= 3.7-    , extra-    , filepath-    , ghcide-    , haskell-language-server:hls-cabal-plugin-    , hls-test-utils    == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- class plugin--------------------------------flag class-  description: Enable class plugin-  default:     True-  manual:      True--common class-  if flag(class)-    build-depends: haskell-language-server:hls-class-plugin-    cpp-options: -Dhls_class--library hls-class-plugin-  import:           defaults, pedantic, warnings-  if !flag(class)-    buildable: False-  exposed-modules:    Ide.Plugin.Class-  other-modules:      Ide.Plugin.Class.CodeAction-                    , Ide.Plugin.Class.CodeLens-                    , Ide.Plugin.Class.ExactPrint-                    , Ide.Plugin.Class.Types-                    , Ide.Plugin.Class.Utils-  hs-source-dirs:     plugins/hls-class-plugin/src-  build-depends:-    , aeson-    , containers-    , deepseq-    , extra-    , ghc-    , ghc-exactprint  >= 1.5 && < 1.15-    , ghcide          == 2.14.0.0-    , hls-graph-    , hls-plugin-api  == 2.14.0.0-    , lens-    , lsp-    , mtl-    , text-    , transformers--  default-extensions:-    DataKinds-    OverloadedStrings--test-suite hls-class-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(class)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-class-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-class-plugin-    , hls-test-utils     == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- call-hierarchy plugin--------------------------------flag callHierarchy-  description: Enable call hierarchy plugin-  default:     True-  manual:      True--common callHierarchy-  if flag(callHierarchy)-    build-depends: haskell-language-server:hls-call-hierarchy-plugin-    cpp-options: -Dhls_callHierarchy--library hls-call-hierarchy-plugin-  import: defaults, pedantic, warnings-  if !flag(callHierarchy)-    buildable: False-  exposed-modules:    Ide.Plugin.CallHierarchy-  other-modules:-    Ide.Plugin.CallHierarchy.Internal-    Ide.Plugin.CallHierarchy.Query-    Ide.Plugin.CallHierarchy.Types--  hs-source-dirs:     plugins/hls-call-hierarchy-plugin/src-  build-depends:-    , aeson-    , containers-    , extra-    , ghc-    , ghcide                == 2.14.0.0-    , hiedb                 ^>= 0.8.0.0-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp                    >=2.8-    , sqlite-simple-    , text--  default-extensions: DataKinds--test-suite hls-call-hierarchy-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(callHierarchy)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-call-hierarchy-plugin/test-  main-is:          Main.hs-  build-depends:-    , aeson-    , containers-    , extra-    , filepath-    , haskell-language-server:hls-call-hierarchy-plugin-    , hls-test-utils        == 2.14.0.0-    , lens-    , lsp-    , lsp-test-    , text---------------------------------- eval plugin--------------------------------flag eval-  description: Enable eval plugin-  default:     True-  manual:      True--common eval-  if flag(eval)-    build-depends: haskell-language-server:hls-eval-plugin-    cpp-options: -Dhls_eval--library hls-eval-plugin-  import: defaults, pedantic, warnings-  if !flag(eval)-    buildable: False-  exposed-modules:-    Ide.Plugin.Eval-    Ide.Plugin.Eval.Types--  hs-source-dirs:     plugins/hls-eval-plugin/src-  other-modules:-    Ide.Plugin.Eval.Code-    Ide.Plugin.Eval.Config-    Ide.Plugin.Eval.GHC-    Ide.Plugin.Eval.Handlers-    Ide.Plugin.Eval.Parse.Comments-    Ide.Plugin.Eval.Parse.Option-    Ide.Plugin.Eval.Rules-    Ide.Plugin.Eval.Util--  build-depends:-    , aeson-    , bytestring-    , containers-    , deepseq-    , Diff                  ^>=0.5 || ^>=1.0.0-    , dlist-    , extra-    , filepath-    , ghc-    , ghc-boot-th-    , ghcide                == 2.14.0.0-    , hls-graph-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp-    , lsp-types-    , megaparsec            >=9.0-    , mtl-    , parser-combinators    >=1.2-    , text-    , text-rope-    , transformers-    , unliftio-    , unordered-containers--  default-extensions:-    DataKinds--test-suite hls-eval-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(eval)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-eval-plugin/test-  main-is:          Main.hs-  ghc-options:      -fno-ignore-asserts-  build-depends:-    , aeson-    , containers-    , extra-    , filepath-    , haskell-language-server:hls-eval-plugin-    , hls-plugin-api-    , hls-test-utils   == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- import lens plugin--------------------------------flag importLens-  description: Enable importLens plugin-  default:     True-  manual:      False--common importLens-  if flag(importLens)-    build-depends: haskell-language-server:hls-explicit-imports-plugin-    cpp-options: -Dhls_importLens--library hls-explicit-imports-plugin-  import:           defaults, pedantic, warnings-  if !flag(importlens)-    buildable: False-  exposed-modules:  Ide.Plugin.ExplicitImports-  hs-source-dirs:   plugins/hls-explicit-imports-plugin/src-  build-depends:-    , aeson-    , containers-    , deepseq-    , ghc-    , ghcide                == 2.14.0.0-    , hls-graph-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp-    , mtl-    , text-    , transformers--  default-extensions:-    DataKinds--test-suite hls-explicit-imports-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(importlens)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-explicit-imports-plugin/test-  main-is:          Main.hs-  build-depends:-    , extra-    , filepath-    , haskell-language-server:hls-explicit-imports-plugin-    , hls-test-utils   == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- rename plugin--------------------------------flag rename-  description: Enable rename plugin-  default:     True-  manual:      True--common rename-  if flag(rename)-    build-depends: haskell-language-server:hls-rename-plugin-    cpp-options: -Dhls_rename--library hls-rename-plugin-  import:           defaults, pedantic, warnings-  if !flag(rename)-    buildable: False-  exposed-modules:-    Ide.Plugin.Rename-    Ide.Plugin.Rename.ModuleName-  hs-source-dirs:   plugins/hls-rename-plugin/src-  build-depends:-    , aeson-    , containers-    , filepath-    , ghc-    , ghcide                == 2.14.0.0-    , hashable-    , hiedb                 ^>= 0.8.0.0-    , hls-plugin-api        == 2.14.0.0-    , haskell-language-server:hls-refactor-plugin-    , lens-    , lsp-types-    , mtl-    , mod-    , syb-    , text-    , text-rope-    , transformers-    , unordered-containers---test-suite hls-rename-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(rename)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-rename-plugin/test-  main-is:          Main.hs-  build-depends:-    , aeson-    , containers-    , filepath-    , hls-plugin-api-    , haskell-language-server:hls-rename-plugin-    , hls-test-utils             == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- retrie plugin--------------------------------flag retrie-  description: Enable retrie plugin-  default:     True-  manual:      True--common retrie-  if flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds))-    build-depends: haskell-language-server:hls-retrie-plugin-    cpp-options: -Dhls_retrie--library hls-retrie-plugin-  import:           defaults, pedantic, warnings-  if !(flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))-    buildable: False-  exposed-modules:  Ide.Plugin.Retrie-  hs-source-dirs:   plugins/hls-retrie-plugin/src-  build-depends:-    , aeson-    , bytestring-    , containers-    , extra-    , ghc-    , ghcide                == 2.14.0.0-    , hashable-    , hls-plugin-api        == 2.14.0.0-    , haskell-language-server:hls-refactor-plugin-    , lens-    , lsp-    , lsp-types-    , mtl-    , retrie                >=0.1.1.0-    , safe-exceptions-    , stm-    , text-    , text-rope-    , transformers-    , unordered-containers--  default-extensions:-    DataKinds--test-suite hls-retrie-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !(flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-retrie-plugin/test-  main-is:          Main.hs-  build-depends:-    , containers-    , filepath-    , hls-plugin-api-    , haskell-language-server:{hls-refactor-plugin, hls-retrie-plugin}-    , hls-test-utils             == 2.14.0.0-    , text---------------------------------- hlint plugin--------------------------------flag ghc-lib-  description:-    Use ghc-lib-parser rather than the ghc library (requires hlint and-    ghc-lib-parser-ex to also be built with it)-  default: True-  manual: True--flag hlint-  description: Enable hlint plugin-  default:     True-  manual:      True--common hlint-  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.-  -- See https://github.com/haskell/haskell-language-server/issues/4674-  -- for its wake of destruction.-  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14-  if flag(hlint) && !impl(ghc ==9.10.*) && !impl(ghc >= 9.14)-    build-depends: haskell-language-server:hls-hlint-plugin-    cpp-options: -Dhls_hlint--library hls-hlint-plugin-  import:           defaults, pedantic, warnings-  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.-  -- See https://github.com/haskell/haskell-language-server/issues/4674-  -- for its wake of destruction.-  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(hlint) || impl(ghc ==9.10.*) || impl(ghc >= 9.14)-    buildable: False-  exposed-modules:  Ide.Plugin.Hlint-  hs-source-dirs:   plugins/hls-hlint-plugin/src-  build-depends:-    , aeson-    , bytestring-    , containers-    , deepseq-    , filepath-    , ghcide                == 2.14.0.0-    , hashable-    , hlint                 >= 3.5 && < 3.11-    , hls-plugin-api        == 2.14.0.0-    , lens-    , mtl-    , refact-    , regex-tdfa-    , stm-    , temporary-    , text-    , text-rope-    , transformers-    , unordered-containers-    , ghc-lib-parser-ex-    , lsp-types--  -- apply-refact doesn't work on 9.10, or even have a buildable-  -- configuration-  if impl(ghc >= 9.11) || impl(ghc < 9.10)-    cpp-options:   -DAPPLY_REFACT-    build-depends: apply-refact--  if flag(ghc-lib)-    cpp-options:   -DGHC_LIB-    build-depends:-        ghc-lib-parser-  else-    build-depends:-        ghc-      , ghc-boot--  default-extensions:-    DataKinds--test-suite hls-hlint-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.-  -- See https://github.com/haskell/haskell-language-server/issues/4674-  -- for its wake of destruction.-  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(hlint) || impl(ghc ==9.10.*) || impl(ghc >= 9.14)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-hlint-plugin/test-  main-is:          Main.hs-  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648-  if os(darwin)-    ghc-options: -optl-Wl,-ld_classic--  build-depends:-      aeson-    , containers-    , filepath-    , haskell-language-server:hls-hlint-plugin-    , hls-plugin-api-    , hls-test-utils      == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- stan plugin--------------------------------flag stan-  description: Enable stan plugin-  default:     True-  manual:      True--common stan-  if flag(stan) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))-    build-depends: haskell-language-server:hls-stan-plugin-    cpp-options: -Dhls_stan--library hls-stan-plugin-  import:           defaults, pedantic, warnings-  if !flag(stan) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))-    buildable: False-  exposed-modules:    Ide.Plugin.Stan-  hs-source-dirs:     plugins/hls-stan-plugin/src-  build-depends:-    , deepseq-    , hashable-    , hls-plugin-api-    , ghcide-    , lsp-types-    , text-    , unordered-containers-    , stan >= 0.2.1.0-    , trial-    , directory--  default-extensions:-    LambdaCase-    TypeFamilies-    DuplicateRecordFields-    OverloadedStrings--test-suite hls-stan-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(stan) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-stan-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-stan-plugin-    , hls-plugin-api-    , hls-test-utils      == 2.14.0.0-    , lens-    , lsp-types-    , text-  default-extensions:-    OverloadedStrings---------------------------------- signature help plugin--------------------------------flag signatureHelp-  description: Enable signature help plugin-  default:     True-  manual:      True--common signatureHelp-  if flag(signatureHelp)-    build-depends: haskell-language-server:hls-signature-help-plugin-    cpp-options: -Dhls_signatureHelp--library hls-signature-help-plugin-  import:           defaults, pedantic, warnings-  if !flag(signatureHelp)-    buildable: False-  exposed-modules:  Ide.Plugin.SignatureHelp-  hs-source-dirs:   plugins/hls-signature-help-plugin/src-  default-extensions:-    DerivingStrategies-    LambdaCase-    OverloadedStrings-  build-depends:-    , containers-    , ghc-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lsp-types-    , text-    , transformers---test-suite hls-signature-help-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(signatureHelp)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-signature-help-plugin/test-  main-is:          Main.hs-  build-depends:-    , ghcide-    , haskell-language-server:hls-signature-help-plugin-    , hls-test-utils             == 2.14.0.0-    , text-  default-extensions:-    DerivingStrategies-    OverloadedStrings---------------------------------- pragmas plugin--------------------------------flag pragmas-  description: Enable pragmas plugin-  default:     True-  manual:      True--common pragmas-  if flag(pragmas)-    build-depends: haskell-language-server:hls-pragmas-plugin-    cpp-options: -Dhls_pragmas--library hls-pragmas-plugin-  import:           defaults, pedantic, warnings-  if !flag(pragmas)-    buildable: False-  exposed-modules:  Ide.Plugin.Pragmas-  hs-source-dirs:   plugins/hls-pragmas-plugin/src-  build-depends:-    , aeson-    , extra-    , fuzzy-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp-    , text-    , containers--test-suite hls-pragmas-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(pragmas)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-pragmas-plugin/test-  main-is:          Main.hs-  build-depends:-    , aeson-    , filepath-    , haskell-language-server:hls-pragmas-plugin-    , hls-test-utils      == 2.14.0.0-    , lens-    , lsp-types-    , text---------------------------------- splice plugin--------------------------------flag splice-  description: Enable splice plugin-  default:     True-  manual:      True--common splice-  if flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds))-    build-depends: haskell-language-server:hls-splice-plugin-    cpp-options: -Dhls_splice--library hls-splice-plugin-  import:           defaults, pedantic, warnings-  if !(flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))-    buildable: False-  exposed-modules:-    Ide.Plugin.Splice-    Ide.Plugin.Splice.Types--  hs-source-dirs:     plugins/hls-splice-plugin/src-  build-depends:-    , aeson-    , extra-    , foldl-    , ghc-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , haskell-language-server:hls-refactor-plugin-    , lens-    , lsp-    , mtl-    , syb-    , text-    , transformers-    , unliftio-core--  default-extensions:-    DataKinds--test-suite hls-splice-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !(flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-splice-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-splice-plugin-    , hls-test-utils == 2.14.0.0-    , text---------------------------------- alternate number format plugin--------------------------------flag alternateNumberFormat-  description: Enable Alternate Number Format plugin-  default:     True-  manual:      True--common alternateNumberFormat-  if flag(alternateNumberFormat)-    build-depends: haskell-language-server:hls-alternate-number-format-plugin-    cpp-options: -Dhls_alternateNumberFormat--library hls-alternate-number-format-plugin-  import:           defaults, pedantic, warnings-  if !flag(alternateNumberFormat)-    buildable: False-  exposed-modules:  Ide.Plugin.AlternateNumberFormat, Ide.Plugin.Conversion-  other-modules:    Ide.Plugin.Literals-  hs-source-dirs:   plugins/hls-alternate-number-format-plugin/src-  build-depends:-    , containers-    , extra-    , ghcide               == 2.14.0.0-    , ghc-boot-th-    , hls-graph-    , hls-plugin-api       == 2.14.0.0-    , lens-    , lsp                  ^>=2.8-    , mtl-    , syb-    , text--  default-extensions:-    LambdaCase-    OverloadedStrings-    RecordWildCards--test-suite hls-alternate-number-format-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(alternateNumberFormat)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-alternate-number-format-plugin/test-  other-modules:    Properties.Conversion-  main-is:          Main.hs-  ghc-options:      -fno-ignore-asserts-  build-depends:-    , containers-    , filepath-    , haskell-language-server:hls-alternate-number-format-plugin-    , hls-test-utils       == 2.14.0.0-    , regex-tdfa-    , tasty-quickcheck-    , text--  default-extensions:-    LambdaCase-    OverloadedStrings-    RecordWildCards---------------------------------- qualify imported names plugin--------------------------------flag qualifyImportedNames-  description: Enable qualifyImportedNames plugin-  default:     True-  manual:      True--common qualifyImportedNames-  if flag(qualifyImportedNames)-    build-depends: haskell-language-server:hls-qualify-imported-names-plugin-    cpp-options: -Dhls_qualifyImportedNames--library hls-qualify-imported-names-plugin-  import:           defaults, pedantic, warnings-  if !flag(qualifyImportedNames)-    buildable: False-  exposed-modules:  Ide.Plugin.QualifyImportedNames-  hs-source-dirs:   plugins/hls-qualify-imported-names-plugin/src-  build-depends:-    , containers-    , ghc-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp-    , text-    , text-rope-    , dlist-    , transformers--  default-extensions:-    DataKinds--test-suite hls-qualify-imported-names-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(qualifyImportedNames)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-qualify-imported-names-plugin/test-  main-is:          Main.hs-  build-depends:-    , text-    , filepath-    , haskell-language-server:hls-qualify-imported-names-plugin-    , hls-test-utils             == 2.14.0.0---------------------------------- code range plugin--------------------------------flag codeRange-  description: Enable Code Range plugin-  default:     True-  manual:      True--common codeRange-  if flag(codeRange)-    build-depends: haskell-language-server:hls-code-range-plugin-    cpp-options: -Dhls_codeRange--library hls-code-range-plugin-  import:           defaults, pedantic, warnings-  if !flag(codeRange)-    buildable: False-  exposed-modules:-    Ide.Plugin.CodeRange-    Ide.Plugin.CodeRange.Rules-  other-modules:-    Ide.Plugin.CodeRange.ASTPreProcess-  hs-source-dirs: plugins/hls-code-range-plugin/src-  build-depends:-    , containers-    , deepseq-    , extra-    , ghc-    , ghcide           == 2.14.0.0-    , hashable-    , hls-plugin-api   == 2.14.0.0-    , lens-    , lsp-    , mtl-    , semigroupoids-    , transformers-    , vector--test-suite hls-code-range-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(codeRange)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-code-range-plugin/test-  main-is:          Main.hs-  other-modules:-    Ide.Plugin.CodeRangeTest-    Ide.Plugin.CodeRange.RulesTest-  build-depends:-    , bytestring-    , filepath-    , haskell-language-server:hls-code-range-plugin-    , hls-test-utils             == 2.14.0.0-    , lens-    , lsp-    , lsp-test-    , transformers-    , vector---------------------------------- change type signature plugin--------------------------------flag changeTypeSignature-  description: Enable changeTypeSignature plugin-  default:     True-  manual:      True--common changeTypeSignature-  if flag(changeTypeSignature)-    build-depends: haskell-language-server:hls-change-type-signature-plugin-    cpp-options: -Dhls_changeTypeSignature--library hls-change-type-signature-plugin-  import:           defaults, pedantic, warnings-  if !flag(changeTypeSignature)-    buildable: False-  exposed-modules:  Ide.Plugin.ChangeTypeSignature-  hs-source-dirs:   plugins/hls-change-type-signature-plugin/src-  build-depends:-    , ghcide           == 2.14.0.0-    , hls-plugin-api   == 2.14.0.0-    , lens-    , lsp-types-    , regex-tdfa-    , syb-    , text-    , transformers-    , containers-    , ghc-  default-extensions:-    DataKinds-    ExplicitNamespaces-    OverloadedStrings-    RecordWildCards---test-suite hls-change-type-signature-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(changeTypeSignature)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-change-type-signature-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-change-type-signature-plugin-    , hls-test-utils       == 2.14.0.0-    , regex-tdfa-    , text-  default-extensions:-    OverloadedStrings-    ViewPatterns---------------------------------- gadt plugin--------------------------------flag gadt-  description: Enable gadt plugin-  default:     True-  manual:      True--common gadt-  if flag(gadt)-    build-depends: haskell-language-server:hls-gadt-plugin-    cpp-options: -Dhls_gadt--library hls-gadt-plugin-  import:           defaults, pedantic, warnings-  if !flag(gadt)-    buildable: False-  exposed-modules:  Ide.Plugin.GADT-  other-modules:    Ide.Plugin.GHC-  hs-source-dirs:   plugins/hls-gadt-plugin/src-  build-depends:-    , aeson-    , containers-    , extra-    , ghc-    , ghcide                 == 2.14.0.0-    , ghc-exactprint-    , hls-plugin-api         == 2.14.0.0-    , haskell-language-server:hls-refactor-plugin-    , lens-    , lsp                    >=2.8-    , mtl-    , text-    , transformers--  default-extensions: DataKinds--test-suite hls-gadt-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(gadt)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-gadt-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-gadt-plugin-    , hls-test-utils              == 2.14.0.0-    , text---------------------------------- explicit fixity plugin--------------------------------flag explicitFixity-  description: Enable explicitFixity plugin-  default:     True-  manual:      True--common explicitFixity-  if flag(explicitFixity)-    build-depends: haskell-language-server:hls-explicit-fixity-plugin-    cpp-options: -DexplicitFixity--library hls-explicit-fixity-plugin-  import:           defaults, pedantic, warnings-  if !flag(explicitFixity)-    buildable: False-  exposed-modules:  Ide.Plugin.ExplicitFixity-  hs-source-dirs:   plugins/hls-explicit-fixity-plugin/src-  build-depends:-    , containers-    , deepseq-    , extra-    , ghcide                == 2.14.0.0-    , hashable-    , hls-plugin-api        == 2.14.0.0-    , lsp                   >=2.8-    , text--  default-extensions: DataKinds--test-suite hls-explicit-fixity-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(explicitFixity)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-explicit-fixity-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-explicit-fixity-plugin-    , hls-test-utils              == 2.14.0.0-    , text---------------------------------- explicit fields plugin--------------------------------flag explicitFields-  description: Enable explicitFields plugin-  default:     True-  manual:      True--common explicitFields-  if flag(explicitFields)-    build-depends: haskell-language-server:hls-explicit-record-fields-plugin-    cpp-options: -DexplicitFields--library hls-explicit-record-fields-plugin-  import:           defaults, pedantic, warnings-  if !flag(explicitFields)-    buildable: False-  exposed-modules:  Ide.Plugin.ExplicitFields-  build-depends:-    , ghc-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lsp-    , lens-    , hls-graph-    , text-    , syb-    , transformers-    , containers-    , aeson-  hs-source-dirs:   plugins/hls-explicit-record-fields-plugin/src--  if flag(pedantic)-    ghc-options: -Wwarn=incomplete-record-updates--test-suite hls-explicit-record-fields-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(explicitFields)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-explicit-record-fields-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , text-    , ghcide-    , haskell-language-server:hls-explicit-record-fields-plugin-    , hls-test-utils              == 2.14.0.0---------------------------------- overloaded record dot plugin--------------------------------flag overloadedRecordDot-  description: Enable overloadedRecordDot plugin-  default:     True-  manual:      True--common overloadedRecordDot-  if flag(overloadedRecordDot)-    build-depends: haskell-language-server:hls-overloaded-record-dot-plugin-    cpp-options: -Dhls_overloaded_record_dot--library hls-overloaded-record-dot-plugin-  import:           defaults, pedantic, warnings-  if !flag(overloadedRecordDot)-    buildable: False-  exposed-modules:  Ide.Plugin.OverloadedRecordDot-  build-depends:-    , aeson-    , ghcide-    , hls-plugin-api-    , lsp-    , lens-    , hls-graph-    , text-    , syb-    , transformers-    , containers-    , deepseq-  hs-source-dirs:   plugins/hls-overloaded-record-dot-plugin/src--test-suite hls-overloaded-record-dot-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(overloadedRecordDot)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-overloaded-record-dot-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , text-    , haskell-language-server:hls-overloaded-record-dot-plugin-    , hls-test-utils              == 2.14.0.0----------------------------------- fourmolu plugin--------------------------------flag fourmolu-  description: Enable fourmolu plugin-  default:     True-  manual:      True--common fourmolu-  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if flag(fourmolu) && !impl(ghc >= 9.14)-    build-depends: haskell-language-server:hls-fourmolu-plugin-    cpp-options: -Dhls_fourmolu--library hls-fourmolu-plugin-  import:           defaults, pedantic, warnings-  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(fourmolu) || impl(ghc >= 9.14)-    buildable: False-  exposed-modules:  Ide.Plugin.Fourmolu-  hs-source-dirs:   plugins/hls-fourmolu-plugin/src-  build-depends:-    , filepath-    , fourmolu        ^>= 0.14 || ^>= 0.15 || ^>= 0.16 || ^>=0.17 || ^>=0.18 || ^>=0.19-    , ghc-boot-th-    , ghcide          == 2.14.0.0-    , hls-plugin-api  == 2.14.0.0-    , lens-    , lsp-    , mtl-    , process-extras  >= 0.7.1-    , text-    , transformers-    , yaml--test-suite hls-fourmolu-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(fourmolu) || impl(ghc >= 9.14)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-fourmolu-plugin/test-  main-is:          Main.hs-  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648-  if os(darwin)-    ghc-options: -optl-Wl,-ld_classic-  build-tool-depends:-    fourmolu:fourmolu-  build-depends:-    , aeson-    , containers-    , filepath-    , haskell-language-server:hls-fourmolu-plugin-    , hls-plugin-api-    , hls-test-utils       == 2.14.0.0-    , lens-    , lsp-test-    , lsp-types-    , text---------------------------------- ormolu plugin--------------------------------flag ormolu-  description: Enable ormolu plugin-  default:     True-  manual:      True--common ormolu-  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if flag(ormolu) && !impl(ghc >= 9.14)-    build-depends: haskell-language-server:hls-ormolu-plugin-    cpp-options: -Dhls_ormolu--library hls-ormolu-plugin-  import:           defaults, pedantic, warnings-  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(ormolu) || impl(ghc >= 9.14)-    buildable: False-  exposed-modules:  Ide.Plugin.Ormolu-  hs-source-dirs:   plugins/hls-ormolu-plugin/src-  build-depends:-    , extra-    , filepath-    , ghc-boot-th-    , ghcide          == 2.14.0.0-    , hls-plugin-api  == 2.14.0.0-    , lsp-    , mtl-    , process-extras  >= 0.7.1-    , ormolu          ^>=0.5.3 || ^>= 0.6 || ^>= 0.7 || ^>=0.8-    , text-    , transformers---test-suite hls-ormolu-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(ormolu) || impl(ghc >= 9.14)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-ormolu-plugin/test-  main-is:          Main.hs-  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648-  if os(darwin)-    ghc-options: -optl-Wl,-ld_classic-  build-tool-depends:-    ormolu:ormolu-  build-depends:-    , aeson-    , containers-    , filepath-    , haskell-language-server:hls-ormolu-plugin-    , hls-plugin-api-    , hls-test-utils     == 2.14.0.0-    , lens-    , lsp-types-    , ormolu-    , text---------------------------------- stylish-haskell plugin--------------------------------flag stylishHaskell-  description: Enable stylishHaskell plugin-  default:     True-  manual:      True--common stylishHaskell-  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14-  if flag(stylishHaskell) && !impl(ghc >= 9.14)-    build-depends: haskell-language-server:hls-stylish-haskell-plugin-    cpp-options: -Dhls_stylishHaskell--library hls-stylish-haskell-plugin-  import:           defaults, pedantic, warnings-  -- https://github.com/haskell/stylish-haskell/issues/479-  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(stylishHaskell) || impl(ghc >= 9.14)-    buildable: False-  exposed-modules:  Ide.Plugin.StylishHaskell-  hs-source-dirs:   plugins/hls-stylish-haskell-plugin/src-  build-depends:-    , directory-    , filepath-    , ghc-boot-th-    , ghcide           == 2.14.0.0-    , hls-plugin-api   == 2.14.0.0-    , lsp-types-    , mtl-    , stylish-haskell  >=0.12 && <0.16-    , text---test-suite hls-stylish-haskell-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14-  if !flag(stylishHaskell) || impl(ghc >= 9.14)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-stylish-haskell-plugin/test-  main-is:          Main.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-stylish-haskell-plugin-    , hls-test-utils              == 2.14.0.0---------------------------------- refactor plugin--------------------------------flag refactor-  description: Enable refactor plugin-  default:     True-  manual:      True--common refactor-  if flag(refactor)-    build-depends: haskell-language-server:hls-refactor-plugin-    cpp-options: -Dhls_refactor--library hls-refactor-plugin-  import:           defaults, pedantic, warnings-  if !flag(refactor)-    buildable: False-  exposed-modules:  Development.IDE.GHC.ExactPrint-                    Development.IDE.GHC.Compat.ExactPrint-                    Development.IDE.Plugin.CodeAction-                    Development.IDE.Plugin.CodeAction.Util-                    Development.IDE.GHC.Dump-  other-modules:    Development.IDE.Plugin.CodeAction.Args-                    Development.IDE.Plugin.CodeAction.ExactPrint-                    Development.IDE.Plugin.CodeAction.PositionIndexed-                    Development.IDE.Plugin.Plugins.AddArgument-                    Development.IDE.Plugin.Plugins.Diagnostic-                    Development.IDE.Plugin.Plugins.FillHole-                    Development.IDE.Plugin.Plugins.FillTypeWildcard-                    Development.IDE.Plugin.Plugins.ImportUtils-  default-extensions:-    CPP-    DataKinds-    DerivingStrategies-    DerivingVia-    DuplicateRecordFields-    ExplicitNamespaces-    FunctionalDependencies-    LambdaCase-    OverloadedStrings-    PatternSynonyms-    RecordWildCards-    ViewPatterns-  hs-source-dirs:   plugins/hls-refactor-plugin/src-  build-depends:-    , ghc-    , bytestring-    , ghc-boot-    , regex-tdfa-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lsp-    , text-    , text-rope-    , transformers-    , unordered-containers-    , containers-    , ghc-exactprint < 1 || >= 1.4-    , extra-    , syb-    , hls-graph-    , dlist-    , deepseq-    , mtl-    , lens-    , time-  if impl(ghc < 9.10)-    build-depends: data-default--test-suite hls-refactor-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(refactor)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-refactor-plugin/test-  main-is:          Main.hs-  other-modules:    Test.AddArgument-  ghc-options:      -O0-  build-depends:-    , data-default-    , directory-    , extra-    , filepath-    , ghcide:ghcide-    , haskell-language-server:hls-refactor-plugin-    , hls-test-utils      == 2.14.0.0-    , lens-    , lsp-test-    , lsp-types-    , parser-combinators-    , regex-tdfa-    , shake-    , tasty-    , tasty-hunit-    , text---------------------------------- semantic tokens plugin--------------------------------flag semanticTokens-  description: Enable semantic tokens plugin-  default:     True-  manual:      True--common semanticTokens-  if flag(semanticTokens)-    build-depends: haskell-language-server:hls-semantic-tokens-plugin-    cpp-options: -Dhls_semanticTokens--library hls-semantic-tokens-plugin-  import: defaults, pedantic, warnings-  if !flag(semanticTokens)-    buildable: False-  exposed-modules:-    Ide.Plugin.SemanticTokens-    Ide.Plugin.SemanticTokens.Types-    Ide.Plugin.SemanticTokens.Mappings-  other-modules:-    Ide.Plugin.SemanticTokens.Query-    Ide.Plugin.SemanticTokens.SemanticConfig-    Ide.Plugin.SemanticTokens.Utils-    Ide.Plugin.SemanticTokens.Tokenize-    Ide.Plugin.SemanticTokens.Internal--  hs-source-dirs:     plugins/hls-semantic-tokens-plugin/src-  build-depends:-    , containers-    , extra-    , text-rope-    , mtl                   >= 2.2-    , ghc-    , ghcide                == 2.14.0.0-    , hls-plugin-api        == 2.14.0.0-    , lens-    , lsp                    >=2.8-    , text-    , transformers-    , bytestring-    , array-    , deepseq-    , dlist-    , hls-graph == 2.14.0.0-    , template-haskell-    , data-default-    , stm-    , stm-containers--  default-extensions: DataKinds--test-suite hls-semantic-tokens-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(semanticTokens)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-semantic-tokens-plugin/test-  main-is:          SemanticTokensTest.hs--  build-depends:-    , aeson-    , containers-    , data-default-    , filepath-    , ghcide                == 2.14.0.0-    , haskell-language-server:hls-semantic-tokens-plugin-    , hls-plugin-api        == 2.14.0.0-    , hls-test-utils        == 2.14.0.0-    , lens-    , lsp-    , lsp-test-    , text-    , text-rope---------------------------------- notes plugin--------------------------------flag notes-  description: Enable notes plugin-  default:     True-  manual:      True--common notes-  if flag(notes)-    build-depends: haskell-language-server:hls-notes-plugin-    cpp-options: -Dhls_notes--library hls-notes-plugin-  import: defaults, pedantic, warnings-  if !flag(notes)-    buildable: False-  exposed-modules:-    Ide.Plugin.Notes-  hs-source-dirs:     plugins/hls-notes-plugin/src-  build-depends:-    , array-    , ghcide == 2.14.0.0-    , hls-graph == 2.14.0.0-    , hls-plugin-api == 2.14.0.0-    , lens-    , lsp >=2.8-    , mtl >= 2.2-    , regex-tdfa >= 1.3.1-    , text-    , text-rope-    , unordered-containers-  default-extensions:-      DataKinds-    , DeriveAnyClass-    , DerivingStrategies-    , OverloadedStrings-    , LambdaCase-    , TypeFamilies--test-suite hls-notes-plugin-tests-  import:           defaults, pedantic, test-defaults, warnings-  if !flag(notes)-    buildable: False-  type:             exitcode-stdio-1.0-  hs-source-dirs:   plugins/hls-notes-plugin/test-  main-is:          NotesTest.hs-  build-depends:-    , filepath-    , haskell-language-server:hls-notes-plugin-    , hls-test-utils == 2.14.0.0-  default-extensions: OverloadedStrings-------------------------------------------------------------- HLS------------------------------------------------------------library-  import:           defaults-                  , warnings-                  , pedantic-                  -- plugins-                  , cabal-                  , callHierarchy-                  , cabalfmt-                  , cabalgild-                  , changeTypeSignature-                  , class-                  , eval-                  , importLens-                  , rename-                  , retrie-                  , hlint-                  , stan-                  , signatureHelp-                  , pragmas-                  , splice-                  , alternateNumberFormat-                  , qualifyImportedNames-                  , codeRange-                  , gadt-                  , explicitFixity-                  , explicitFields-                  , fourmolu-                  , ormolu-                  , stylishHaskell-                  , refactor-                  , overloadedRecordDot-                  , semanticTokens-                  , notes--  exposed-modules:-    Ide.Arguments-    Ide.Main-    Ide.Version-    HlsPlugins--  other-modules:    Paths_haskell_language_server-  autogen-modules:  Paths_haskell_language_server-  hs-source-dirs:   src-  build-depends:-    , aeson-pretty-    , data-default-    , directory-    , extra-    , filepath-    , ghc-    , ghcide                == 2.14.0.0-    , githash               >=0.1.6.1-    , hie-bios-    , hls-plugin-api        == 2.14.0.0-    , optparse-applicative-    , optparse-simple-    , prettyprinter         >= 1.7-    , process-    , text--  default-extensions: DataKinds--executable haskell-language-server-  import:           defaults-                  , warnings-                  , pedantic-  main-is:          Main.hs-  hs-source-dirs:   exe--  ghc-options:-    -threaded-    -- allow user RTS overrides-    -rtsopts-    -- disable idle GC-    -- increase nursery size-    -- Enable collection of heap statistics-    "-with-rtsopts=-I0 -A128M -T"-  if flag(pedantic)-    ghc-options: -Werror-  if !os(windows) && flag(dynamic)-  -- We want to link against the dyn rts just like official GHC binaries do;-  --   the linked rts determines how external libs are loaded dynamically by TH.-  -- The standard way of doing this is via the --enable-dynamic-executables Cabal option-  -- Unfortunately it doesnt' work, see https://github.com/haskell/haskell-language-server/issues/2659-  -- One can use --ghc-options=-dynamic but this gets applied to the dependencies as well,-  -- which results in massive rebuilds and incompatibilities with profiling.-  -- So instead we set the -dynamic flag diretly here.-    ghc-options: -dynamic--  build-depends:-    , haskell-language-server-    , hls-plugin-api-    , lsp-    , prettyprinter           >= 1.7-    , text--  default-extensions: DataKinds--executable haskell-language-server-wrapper-  import:           defaults-                  , warnings-                  , pedantic-  main-is:          Wrapper.hs-  hs-source-dirs:   exe-  other-modules:    Paths_haskell_language_server-  autogen-modules:  Paths_haskell_language_server-  ghc-options:-    -threaded-    -- allow user RTS overrides-    -rtsopts-    -- disable idle GC-    -- increase nursery size-    "-with-rtsopts=-I0 -A128M"--  build-depends:-    , data-default-    , directory-    , extra-    , filepath-    , ghcide-    , haskell-language-server-    , hie-bios-    , hls-plugin-api-    , lsp-    , lsp-types-    , text-    , transformers-    , unliftio-core-  if !os(windows)-      build-depends:-        , unix-        , containers-  else-      build-depends:-        , process--test-suite func-test-  import:             defaults-                    , test-defaults-                    , warnings-                    , pedantic-                    , refactor-  type:               exitcode-stdio-1.0-  build-tool-depends:-    haskell-language-server:haskell-language-server,--  build-depends:-    , aeson-    , bytestring-    , containers-    , deepseq-    , extra-    , filepath-    , ghcide:ghcide-    , hashable-    , hls-plugin-api-    , hls-test-utils == 2.14.0.0-    , lens-    , lsp-test-    , lsp-types-    , text-    , unordered-containers--  hs-source-dirs:     test/functional test/utils--  main-is:            Main.hs-  other-modules:-    Config-    ConfigSchema-    Format-    FunctionalBadProject-    HieBios-    Progress-    Test.Hls.Command-    Test.Hls.Flags--  default-extensions: OverloadedStrings---- Duplicating inclusion plugin conditions until tests are moved to their own packages-  if flag(eval)-    cpp-options: -Dhls_eval--- formatters-  if flag(fourmolu) && (impl(ghc < 9.14) || flag(ignore-plugins-ghc-bounds))-    cpp-options: -Dhls_fourmolu-  if flag(ormolu) && (impl(ghc < 9.14) || flag(ignore-plugins-ghc-bounds))-    cpp-options: -Dhls_ormolu--test-suite wrapper-test-  import:             defaults-                    , warnings-                    , pedantic-  type:               exitcode-stdio-1.0-  build-tool-depends:-    haskell-language-server:haskell-language-server-wrapper,-    haskell-language-server:haskell-language-server--  build-depends:-    , extra-    , hls-test-utils              == 2.14.0.0-    , process--  hs-source-dirs:     test/wrapper-  main-is:            Main.hs--benchmark benchmark-    import:           defaults, warnings-    -- Depends on shake-bench which is unbuildable after this point-    type: exitcode-stdio-1.0-    ghc-options: -threaded-    main-is: Main.hs-    hs-source-dirs: bench-    build-tool-depends:-        haskell-language-server:ghcide-bench,-        eventlog2html:eventlog2html,-    default-extensions:-        LambdaCase-        RecordWildCards-        ViewPatterns--    build-depends:-      , aeson-      , containers-      , data-default-      , directory-      , extra-      , filepath-      , haskell-language-server:ghcide-bench-lib-      , haskell-language-server-      , hls-plugin-api-      , lens-      , lens-aeson-      , shake-      , shake-bench == 0.2.*-      , text-      , yaml--flag test-exe-  description: Build the ghcide-test-preprocessor executable-  default:     True--executable ghcide-test-preprocessor-  import: warnings-  default-language:   GHC2021-  hs-source-dirs:   ghcide-test/preprocessor-  main-is:          Main.hs-  build-depends:    base >=4 && <5--  if !flag(test-exe)-    buildable: False--test-suite ghcide-tests-  import: warnings, defaults-  type:               exitcode-stdio-1.0-  default-language:   GHC2021-  build-tool-depends:-    , ghcide:ghcide-    , haskell-language-server:ghcide-test-preprocessor-    , implicit-hie:gen-hie--  build-depends:-    , aeson-    , containers-    , data-default-    , directory-    , enummapset-    , extra-    , filepath-    , ghcide-    , hls-plugin-api-    , lens-    , list-t-    , lsp-    , lsp-test                ^>=0.18.0-    , lsp-types-    , mtl-    , network-uri-    , QuickCheck-    , random-    , regex-tdfa              ^>=1.3.1-    , shake-    , sqlite-simple-    , stm-    , stm-containers-    , tasty-    , tasty-expected-failure-    , tasty-hunit             >=0.10-    , tasty-quickcheck-    , tasty-rerun-    , text-    , text-rope-    , unordered-containers-    , hls-test-utils == 2.14.0.0--  if impl(ghc <9.3)-    build-depends: ghc-typelits-knownnat--  hs-source-dirs:     ghcide-test/exe-  ghc-options:        -threaded -O0--  main-is:            Main.hs-  other-modules:-    Config-    AsyncTests-    BootTests-    ClientSettingsTests-    CodeLensTests-    CompletionTests-    ConstructorHoverTests-    CPPTests-    CradleTests-    DependentFileTest-    DiagnosticTests-    ExceptionTests-    FindDefinitionAndHoverTests-    FindImplementationAndHoverTests-    FuzzySearch-    GarbageCollectionTests-    HaddockTests-    HieDbRetry-    HighlightTests-    Hover-    IfaceTests-    InitializeResponseTests-    LogType-    NonLspCommandLine-    OpenCloseTest-    OutlineTests-    PluginSimpleTests-    PositionMappingTests-    PreprocessorTests-    Progress-    ReferenceTests-    ResolveTests-    RootUriTests-    SafeTests-    SymlinkTests-    THTests-    UnitTests-    WatchedFileTests--  -- Tests that have been pulled out of the main file-  default-extensions:-    LambdaCase-    OverloadedStrings-    RecordWildCards-    ViewPatterns--flag ghcide-bench-  description: Build the ghcide-bench executable-  default:     True--executable ghcide-bench-    import: defaults-    if !flag(ghcide-bench)-      buildable: False-    build-depends:-        aeson,-        bytestring,-        containers,-        data-default,-        extra,-        filepath,-        hls-plugin-api,-        hls-test-utils,-        lens,-        lsp-test,-        lsp-types,-        optparse-applicative,-        process,-        safe-exceptions,-        hls-graph,-        shake,-        tasty-hunit >= 0.10,-        text,-        haskell-language-server:ghcide-bench-lib,-    hs-source-dirs: ghcide-bench/exe-    ghc-options: -threaded -Wall -Wno-name-shadowing -rtsopts-    main-is: Main.hs-    default-extensions:-        LambdaCase-        OverloadedStrings-        RecordWildCards-        ViewPatterns--library ghcide-bench-lib-    import: defaults-    hs-source-dirs: ghcide-bench/src-    ghc-options: -Wall -Wno-name-shadowing-    exposed-modules:-        Experiments.Types-        Experiments-    build-depends:-        aeson,-        async,-        binary,-        bytestring,-        deepseq,-        directory,-        extra,-        filepath,-        ghcide:{ghcide},-        hashable,-        lens,-        lsp-test,-        lsp-types,-        optparse-applicative,-        parser-combinators,-        process,-        safe-exceptions,-        shake,-        text,-        hls-test-utils,-        row-types-    default-extensions:-        LambdaCase-        RecordWildCards-        ViewPatterns---test-suite ghcide-bench-test-    import: defaults-    type: exitcode-stdio-1.0-    build-tool-depends:-        ghcide:ghcide,-    main-is: Main.hs-    hs-source-dirs: ghcide-bench/test-    ghc-options: -Wunused-packages-    ghc-options: -threaded -Wall-    build-depends:-        extra,-        haskell-language-server:ghcide-bench-lib,-        lsp-test ^>= 0.18,-        tasty,-        tasty-hunit >= 0.10,-        tasty-rerun-    default-extensions:-        LambdaCase-        OverloadedStrings-        RecordWildCards-        ViewPatterns--flag plugin-tutorial-  description: Build the plugin tutorial executable-  default:     True-  manual:      True--executable plugin-tutorial-  import: defaults-  -- The plugin tutorial is only compatible with 9.6 and 9.8.-  -- No particular reason, just to avoid excessive CPP.-  if flag(plugin-tutorial) && (impl(ghc >= 9.6) && impl(ghc < 9.10))-    buildable: True-  else-    buildable: False-  ghc-options: -pgmL markdown-unlit-  main-is: docs/contributing/plugin-tutorial.lhs-  build-tool-depends: markdown-unlit:markdown-unlit-  build-depends:-    base,-    ghcide,-    hls-plugin-api,-    aeson,-    lsp,-    lsp-types,-    markdown-unlit,-    text,-    unordered-containers,-    containers,-    transformers,-    ghc,+cabal-version:      3.4
+category:           Development
+name:               haskell-language-server
+version:            2.14.0.0
+x-revision: 1
+synopsis:           LSP server for GHC
+description:
+  Please see the README on GitHub at <https://github.com/haskell/haskell-language-server#readme>
+
+homepage:           https://github.com/haskell/haskell-language-server#readme
+bug-reports:        https://github.com/haskell/haskell-language-server/issues
+author:             The Haskell IDE Team
+maintainer:         alan.zimm@gmail.com
+copyright:          The Haskell IDE Team
+license:            Apache-2.0
+license-file:       LICENSE
+build-type:         Simple
+tested-with:        GHC == {9.14.1, 9.12.2, 9.10.3, 9.8.4, 9.6.7}
+extra-source-files:
+  README.md
+  ChangeLog.md
+  test/testdata/**/*.project
+  test/testdata/**/*.cabal
+  test/testdata/**/*.yaml
+  test/testdata/**/*.hs
+  test/testdata/**/*.json
+
+  -- These globs should only match test/testdata
+  plugins/**/*.project
+  plugins/**/*.expected
+  plugins/**/*.cabal
+  plugins/**/*.yaml
+  plugins/**/*.txt
+  plugins/**/*.hs
+
+  ghcide-test/data/**/*.cabal
+  ghcide-test/data/**/*.hs
+  ghcide-test/data/**/*.hs-boot
+  ghcide-test/data/**/*.project
+  ghcide-test/data/**/*.yaml
+
+  bindist/wrapper.in
+
+source-repository head
+  type:     git
+  location: https://github.com/haskell/haskell-language-server
+
+common defaults
+  default-language: GHC2021
+  -- Should have been in GHC2021, an oversight
+  default-extensions: ExplicitNamespaces
+  build-depends:
+    , base >=4.12 && <5
+
+common test-defaults
+  ghc-options: -threaded -rtsopts -with-rtsopts=-N
+  if impl(ghc >= 9.8)
+    -- We allow using partial functions in tests
+    ghc-options: -Wno-x-partial
+
+-- Default warnings in HLS
+common warnings
+  ghc-options: -Wall
+               -Wredundant-constraints
+               -Wunused-packages
+               -Wno-name-shadowing
+               -Wno-unticked-promoted-constructors
+
+flag pedantic
+  description: Enable -Werror
+  default:     False
+  manual:      True
+
+-- Allow compiling in pedantic mode
+common pedantic
+  if flag(pedantic)
+    ghc-options:
+      -Werror
+      -- Note [unused-packages]
+      -- ~~~~~~~~~~~~~~~~~~~~~~
+      -- Some packages need CPP conditioned on MIN_VERSION_ghc(x,y,z).
+      -- MIN_VERSION_<pkg> is CPP macro that cabal defines only when <pkg> is declared as a dependency.
+      -- But -Wunused-packages still reports it as unused dependency if it's not imported.
+      -- For packages with such "unused" dependencies we demote -Wunused-packages error
+      -- (enabled by --flag=pedantic) to warning via -Wwarn=unused-packages.
+      -Wwarn=unused-packages
+
+-- Plugin flags are designed for 'cabal install haskell-language-server':
+-- - Bulk flags should be default:False
+-- - Individual flags should be default:True
+
+-- The intent of this flag is being able to keep the ghc condition for hackage
+-- but skip it via flags in cabal.project as plugins for new ghcs usually
+-- are buildable using cabal.project tweaks
+flag ignore-plugins-ghc-bounds
+  description: Force the inclusion of plugins even if they are not buildable by default with a specific ghc version
+  default:     False
+  manual:      True
+
+flag dynamic
+  description: Build with the dyn rts
+  default:     True
+  manual:      True
+
+----------------------------
+----------------------------
+-- PLUGINS
+----------------------------
+----------------------------
+
+-----------------------------
+-- cabal-fmt plugin
+-----------------------------
+
+flag cabalfmt
+  description: Enable cabal-fmt plugin
+  default:     True
+  manual:      True
+
+common cabalfmt
+  if flag(cabalfmt) && flag(cabal)
+    build-depends: haskell-language-server:hls-cabal-fmt-plugin
+    cpp-options: -Dhls_cabalfmt
+
+flag isolateCabalfmtTests
+  description: Should tests search for 'cabal-fmt' on the $PATH or shall we install it via build-tool-depends?
+  -- By default, search on the PATH
+  default:     False
+  manual:      True
+
+library hls-cabal-fmt-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(cabalfmt) || !flag(cabal)
+    buildable: False
+  exposed-modules:  Ide.Plugin.CabalFmt
+  hs-source-dirs:   plugins/hls-cabal-fmt-plugin/src
+  build-depends:
+    , directory
+    , filepath
+    , ghcide          == 2.14.0.0
+    , hls-plugin-api  == 2.14.0.0
+    , lens
+    , lsp-types
+    , mtl
+    , process-extras
+    , text
+
+-- The `hls-cabal-plugin` is needed for tests, as we need to install notification handlers
+test-suite hls-cabal-fmt-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(cabalfmt) || !flag(cabal)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-cabal-fmt-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , directory
+    , filepath
+    , haskell-language-server:hls-cabal-plugin
+    , haskell-language-server:hls-cabal-fmt-plugin
+    , hls-plugin-api        == 2.14.0.0
+    , hls-test-utils        == 2.14.0.0
+
+  if flag(isolateCabalfmtTests)
+    build-tool-depends: cabal-fmt:cabal-fmt ^>=0.1.12
+    cpp-options: -Dhls_isolate_cabalfmt_tests
+
+-----------------------------
+-- cabal-gild plugin
+-----------------------------
+
+flag cabalgild
+  description: Enable cabal-gild plugin
+  default:     True
+  manual:      True
+
+common cabalgild
+  if flag(cabalgild) && flag(cabal)
+    build-depends: haskell-language-server:hls-cabal-gild-plugin
+    cpp-options: -Dhls_cabalgild
+
+flag isolateCabalGildTests
+  description: Should tests search for 'cabal-gild' on the $PATH or shall we install it via build-tool-depends?
+  -- By default, search on the PATH
+  default:     False
+  manual:      True
+
+library hls-cabal-gild-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(cabalgild) || !flag(cabal)
+    buildable: False
+  exposed-modules:  Ide.Plugin.CabalGild
+  hs-source-dirs:   plugins/hls-cabal-gild-plugin/src
+  build-depends:
+    , directory
+    , filepath
+    , ghcide          == 2.14.0.0
+    , hls-plugin-api  == 2.14.0.0
+    , lsp-types
+    , text
+    , mtl
+    , process-extras
+
+-- The `hls-cabal-plugin` is needed for tests, as we need to install notification handlers
+test-suite hls-cabal-gild-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(cabalgild) || !flag(cabal)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-cabal-gild-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , directory
+    , filepath
+    , haskell-language-server:hls-cabal-plugin
+    , haskell-language-server:hls-cabal-gild-plugin
+    , hls-plugin-api        == 2.14.0.0
+    , hls-test-utils        == 2.14.0.0
+
+  if flag(isolateCabalGildTests)
+    -- https://github.com/tfausak/cabal-gild/issues/89
+    build-tool-depends: cabal-gild:cabal-gild >= 1.3 && < 1.3.2
+    cpp-options: -Dhls_isolate_cabalgild_tests
+
+-----------------------------
+-- cabal plugin
+-----------------------------
+
+flag cabal
+  description: Enable cabal plugin
+  default:     True
+  manual:      True
+
+common cabal
+  if flag(cabal)
+    build-depends: haskell-language-server:hls-cabal-plugin
+    cpp-options: -Dhls_cabal
+
+library hls-cabal-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(cabal)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.Cabal
+    Ide.Plugin.Cabal.Diagnostics
+    Ide.Plugin.Cabal.Completion.CabalFields
+    Ide.Plugin.Cabal.Completion.Completer.FilePath
+    Ide.Plugin.Cabal.Completion.Completer.Module
+    Ide.Plugin.Cabal.Completion.Completer.Paths
+    Ide.Plugin.Cabal.Completion.Completer.Simple
+    Ide.Plugin.Cabal.Completion.Completer.Snippet
+    Ide.Plugin.Cabal.Completion.Completer.Types
+    Ide.Plugin.Cabal.Completion.Completions
+    Ide.Plugin.Cabal.Completion.Data
+    Ide.Plugin.Cabal.Completion.Types
+    Ide.Plugin.Cabal.Definition
+    Ide.Plugin.Cabal.FieldSuggest
+    Ide.Plugin.Cabal.Files
+    Ide.Plugin.Cabal.OfInterest
+    Ide.Plugin.Cabal.LicenseSuggest
+    Ide.Plugin.Cabal.Rules
+    Ide.Plugin.Cabal.CabalAdd.Command
+    Ide.Plugin.Cabal.CabalAdd.CodeAction
+    Ide.Plugin.Cabal.CabalAdd.Types
+    Ide.Plugin.Cabal.Orphans
+    Ide.Plugin.Cabal.Outline
+    Ide.Plugin.Cabal.Parse
+
+
+  build-depends:
+    , bytestring
+    , Cabal-syntax          >= 3.7
+    , containers
+    , deepseq
+    , directory
+    , filepath
+    , extra                 >=1.8
+    , ghcide                == 2.14.0.0
+    , hashable
+    , hls-plugin-api        == 2.14.0.0
+    , hls-graph             == 2.14.0.0
+    , lens
+    , lsp                   ^>=2.8
+    , lsp-types             ^>=2.4
+    , mtl
+    , regex-tdfa            ^>=1.3.1
+    , text
+    , text-rope
+    , transformers
+    , unordered-containers  >=0.2.10.0
+    , containers
+    , cabal-add             ^>=0.2
+    , aeson
+    , Cabal
+    , pretty
+
+  hs-source-dirs:   plugins/hls-cabal-plugin/src
+
+test-suite hls-cabal-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(cabal)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-cabal-plugin/test
+  main-is:          Main.hs
+  other-modules:
+    CabalAdd
+    Completer
+    Context
+    Definition
+    Outline
+    Utils
+  build-depends:
+    , bytestring
+    , Cabal-syntax          >= 3.7
+    , extra
+    , filepath
+    , ghcide
+    , haskell-language-server:hls-cabal-plugin
+    , hls-test-utils    == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- class plugin
+-----------------------------
+
+flag class
+  description: Enable class plugin
+  default:     True
+  manual:      True
+
+common class
+  if flag(class)
+    build-depends: haskell-language-server:hls-class-plugin
+    cpp-options: -Dhls_class
+
+library hls-class-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(class)
+    buildable: False
+  exposed-modules:    Ide.Plugin.Class
+  other-modules:      Ide.Plugin.Class.CodeAction
+                    , Ide.Plugin.Class.CodeLens
+                    , Ide.Plugin.Class.ExactPrint
+                    , Ide.Plugin.Class.Types
+                    , Ide.Plugin.Class.Utils
+  hs-source-dirs:     plugins/hls-class-plugin/src
+  build-depends:
+    , aeson
+    , containers
+    , deepseq
+    , extra
+    , ghc
+    , ghc-exactprint  >= 1.5 && < 1.15
+    , ghcide          == 2.14.0.0
+    , hls-graph
+    , hls-plugin-api  == 2.14.0.0
+    , lens
+    , lsp
+    , mtl
+    , text
+    , transformers
+
+  default-extensions:
+    DataKinds
+    OverloadedStrings
+
+test-suite hls-class-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(class)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-class-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-class-plugin
+    , hls-test-utils     == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- call-hierarchy plugin
+-----------------------------
+
+flag callHierarchy
+  description: Enable call hierarchy plugin
+  default:     True
+  manual:      True
+
+common callHierarchy
+  if flag(callHierarchy)
+    build-depends: haskell-language-server:hls-call-hierarchy-plugin
+    cpp-options: -Dhls_callHierarchy
+
+library hls-call-hierarchy-plugin
+  import: defaults, pedantic, warnings
+  if !flag(callHierarchy)
+    buildable: False
+  exposed-modules:    Ide.Plugin.CallHierarchy
+  other-modules:
+    Ide.Plugin.CallHierarchy.Internal
+    Ide.Plugin.CallHierarchy.Query
+    Ide.Plugin.CallHierarchy.Types
+
+  hs-source-dirs:     plugins/hls-call-hierarchy-plugin/src
+  build-depends:
+    , aeson
+    , containers
+    , extra
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hiedb                 ^>= 0.8.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp                    >=2.8
+    , sqlite-simple
+    , text
+
+  default-extensions: DataKinds
+
+test-suite hls-call-hierarchy-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(callHierarchy)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-call-hierarchy-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , aeson
+    , containers
+    , extra
+    , filepath
+    , haskell-language-server:hls-call-hierarchy-plugin
+    , hls-test-utils        == 2.14.0.0
+    , lens
+    , lsp
+    , lsp-test
+    , text
+
+-----------------------------
+-- eval plugin
+-----------------------------
+
+flag eval
+  description: Enable eval plugin
+  default:     True
+  manual:      True
+
+common eval
+  if flag(eval)
+    build-depends: haskell-language-server:hls-eval-plugin
+    cpp-options: -Dhls_eval
+
+library hls-eval-plugin
+  import: defaults, pedantic, warnings
+  if !flag(eval)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.Eval
+    Ide.Plugin.Eval.Types
+
+  hs-source-dirs:     plugins/hls-eval-plugin/src
+  other-modules:
+    Ide.Plugin.Eval.Code
+    Ide.Plugin.Eval.Config
+    Ide.Plugin.Eval.GHC
+    Ide.Plugin.Eval.Handlers
+    Ide.Plugin.Eval.Parse.Comments
+    Ide.Plugin.Eval.Parse.Option
+    Ide.Plugin.Eval.Rules
+    Ide.Plugin.Eval.Util
+
+  build-depends:
+    , aeson
+    , bytestring
+    , containers
+    , deepseq
+    , Diff                  ^>=0.5 || ^>=1.0.0
+    , dlist
+    , extra
+    , filepath
+    , ghc
+    , ghc-boot-th
+    , ghcide                == 2.14.0.0
+    , hls-graph
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp
+    , lsp-types
+    , megaparsec            >=9.0
+    , mtl
+    , parser-combinators    >=1.2
+    , text
+    , text-rope
+    , transformers
+    , unliftio
+    , unordered-containers
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-eval-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(eval)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-eval-plugin/test
+  main-is:          Main.hs
+  ghc-options:      -fno-ignore-asserts
+  build-depends:
+    , aeson
+    , containers
+    , extra
+    , filepath
+    , haskell-language-server:hls-eval-plugin
+    , hls-plugin-api
+    , hls-test-utils   == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- import lens plugin
+-----------------------------
+
+flag importLens
+  description: Enable importLens plugin
+  default:     True
+  manual:      False
+
+common importLens
+  if flag(importLens)
+    build-depends: haskell-language-server:hls-explicit-imports-plugin
+    cpp-options: -Dhls_importLens
+
+library hls-explicit-imports-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(importlens)
+    buildable: False
+  exposed-modules:  Ide.Plugin.ExplicitImports
+  hs-source-dirs:   plugins/hls-explicit-imports-plugin/src
+  build-depends:
+    , aeson
+    , containers
+    , deepseq
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-graph
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp
+    , mtl
+    , text
+    , transformers
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-explicit-imports-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(importlens)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-explicit-imports-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , extra
+    , filepath
+    , haskell-language-server:hls-explicit-imports-plugin
+    , hls-test-utils   == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- rename plugin
+-----------------------------
+
+flag rename
+  description: Enable rename plugin
+  default:     True
+  manual:      True
+
+common rename
+  if flag(rename)
+    build-depends: haskell-language-server:hls-rename-plugin
+    cpp-options: -Dhls_rename
+
+library hls-rename-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(rename)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.Rename
+    Ide.Plugin.Rename.ModuleName
+  hs-source-dirs:   plugins/hls-rename-plugin/src
+  build-depends:
+    , aeson
+    , containers
+    , filepath
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hashable
+    , hiedb                 ^>= 0.8.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , haskell-language-server:hls-refactor-plugin
+    , lens
+    , lsp-types
+    , mtl
+    , mod
+    , syb
+    , text
+    , text-rope
+    , transformers
+    , unordered-containers
+
+
+test-suite hls-rename-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(rename)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-rename-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , aeson
+    , containers
+    , filepath
+    , hls-plugin-api
+    , haskell-language-server:hls-rename-plugin
+    , hls-test-utils             == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- retrie plugin
+-----------------------------
+
+flag retrie
+  description: Enable retrie plugin
+  default:     True
+  manual:      True
+
+common retrie
+  if flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds))
+    build-depends: haskell-language-server:hls-retrie-plugin
+    cpp-options: -Dhls_retrie
+
+library hls-retrie-plugin
+  import:           defaults, pedantic, warnings
+  if !(flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))
+    buildable: False
+  exposed-modules:  Ide.Plugin.Retrie
+  hs-source-dirs:   plugins/hls-retrie-plugin/src
+  build-depends:
+    , aeson
+    , bytestring
+    , containers
+    , extra
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hashable
+    , hls-plugin-api        == 2.14.0.0
+    , haskell-language-server:hls-refactor-plugin
+    , lens
+    , lsp
+    , lsp-types
+    , mtl
+    , retrie                >=0.1.1.0
+    , safe-exceptions
+    , stm
+    , text
+    , text-rope
+    , transformers
+    , unordered-containers
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-retrie-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !(flag(retrie) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-retrie-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , containers
+    , filepath
+    , hls-plugin-api
+    , haskell-language-server:{hls-refactor-plugin, hls-retrie-plugin}
+    , hls-test-utils             == 2.14.0.0
+    , text
+
+-----------------------------
+-- hlint plugin
+-----------------------------
+
+flag ghc-lib
+  description:
+    Use ghc-lib-parser rather than the ghc library (requires hlint and
+    ghc-lib-parser-ex to also be built with it)
+  default: True
+  manual: True
+
+flag hlint
+  description: Enable hlint plugin
+  default:     True
+  manual:      True
+
+common hlint
+  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.
+  -- See https://github.com/haskell/haskell-language-server/issues/4674
+  -- for its wake of destruction.
+  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14
+  if flag(hlint) && !impl(ghc ==9.10.*) && !impl(ghc >= 9.14)
+    build-depends: haskell-language-server:hls-hlint-plugin
+    cpp-options: -Dhls_hlint
+
+library hls-hlint-plugin
+  import:           defaults, pedantic, warnings
+  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.
+  -- See https://github.com/haskell/haskell-language-server/issues/4674
+  -- for its wake of destruction.
+  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(hlint) || impl(ghc ==9.10.*) || impl(ghc >= 9.14)
+    buildable: False
+  exposed-modules:  Ide.Plugin.Hlint
+  hs-source-dirs:   plugins/hls-hlint-plugin/src
+  build-depends:
+    , aeson
+    , bytestring
+    , containers
+    , deepseq
+    , filepath
+    , ghcide                == 2.14.0.0
+    , hashable
+    , hlint                 >= 3.5 && < 3.11
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , mtl
+    , refact
+    , regex-tdfa
+    , stm
+    , temporary
+    , text
+    , text-rope
+    , transformers
+    , unordered-containers
+    , ghc-lib-parser-ex
+    , lsp-types
+
+  -- apply-refact doesn't work on 9.10, or even have a buildable
+  -- configuration
+  if impl(ghc >= 9.11) || impl(ghc < 9.10)
+    cpp-options:   -DAPPLY_REFACT
+    build-depends: apply-refact
+
+  if flag(ghc-lib)
+    cpp-options:   -DGHC_LIB
+    build-depends:
+        ghc-lib-parser
+  else
+    build-depends:
+        ghc
+      , ghc-boot
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-hlint-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  -- Hlint isn't compatible with GHC 9.10, and crashes in subtle ways.
+  -- See https://github.com/haskell/haskell-language-server/issues/4674
+  -- for its wake of destruction.
+  -- hlint depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(hlint) || impl(ghc ==9.10.*) || impl(ghc >= 9.14)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-hlint-plugin/test
+  main-is:          Main.hs
+  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648
+  if os(darwin)
+    ghc-options: -optl-Wl,-ld_classic
+
+  build-depends:
+      aeson
+    , containers
+    , filepath
+    , haskell-language-server:hls-hlint-plugin
+    , hls-plugin-api
+    , hls-test-utils      == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- stan plugin
+-----------------------------
+
+flag stan
+  description: Enable stan plugin
+  default:     True
+  manual:      True
+
+common stan
+  if flag(stan) && (impl(ghc < 9.11) || flag(ignore-plugins-ghc-bounds))
+    build-depends: haskell-language-server:hls-stan-plugin
+    cpp-options: -Dhls_stan
+
+library hls-stan-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(stan) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
+    buildable: False
+  exposed-modules:    Ide.Plugin.Stan
+  hs-source-dirs:     plugins/hls-stan-plugin/src
+  build-depends:
+    , deepseq
+    , hashable
+    , hls-plugin-api
+    , ghcide
+    , lsp-types
+    , text
+    , unordered-containers
+    , stan >= 0.2.1.0
+    , trial
+    , directory
+
+  default-extensions:
+    LambdaCase
+    TypeFamilies
+    DuplicateRecordFields
+    OverloadedStrings
+
+test-suite hls-stan-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(stan) || (impl(ghc > 9.11) && !flag(ignore-plugins-ghc-bounds))
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-stan-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-stan-plugin
+    , hls-plugin-api
+    , hls-test-utils      == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+  default-extensions:
+    OverloadedStrings
+
+-----------------------------
+-- signature help plugin
+-----------------------------
+
+flag signatureHelp
+  description: Enable signature help plugin
+  default:     True
+  manual:      True
+
+common signatureHelp
+  if flag(signatureHelp)
+    build-depends: haskell-language-server:hls-signature-help-plugin
+    cpp-options: -Dhls_signatureHelp
+
+library hls-signature-help-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(signatureHelp)
+    buildable: False
+  exposed-modules:  Ide.Plugin.SignatureHelp
+  hs-source-dirs:   plugins/hls-signature-help-plugin/src
+  default-extensions:
+    DerivingStrategies
+    LambdaCase
+    OverloadedStrings
+  build-depends:
+    , containers
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lsp-types
+    , text
+    , transformers
+
+
+test-suite hls-signature-help-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(signatureHelp)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-signature-help-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , ghcide
+    , haskell-language-server:hls-signature-help-plugin
+    , hls-test-utils             == 2.14.0.0
+    , text
+  default-extensions:
+    DerivingStrategies
+    OverloadedStrings
+
+-----------------------------
+-- pragmas plugin
+-----------------------------
+
+flag pragmas
+  description: Enable pragmas plugin
+  default:     True
+  manual:      True
+
+common pragmas
+  if flag(pragmas)
+    build-depends: haskell-language-server:hls-pragmas-plugin
+    cpp-options: -Dhls_pragmas
+
+library hls-pragmas-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(pragmas)
+    buildable: False
+  exposed-modules:  Ide.Plugin.Pragmas
+  hs-source-dirs:   plugins/hls-pragmas-plugin/src
+  build-depends:
+    , aeson
+    , extra
+    , fuzzy
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp
+    , text
+    , containers
+
+test-suite hls-pragmas-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(pragmas)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-pragmas-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , aeson
+    , filepath
+    , haskell-language-server:hls-pragmas-plugin
+    , hls-test-utils      == 2.14.0.0
+    , lens
+    , lsp-types
+    , text
+
+-----------------------------
+-- splice plugin
+-----------------------------
+
+flag splice
+  description: Enable splice plugin
+  default:     True
+  manual:      True
+
+common splice
+  if flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds))
+    build-depends: haskell-language-server:hls-splice-plugin
+    cpp-options: -Dhls_splice
+
+library hls-splice-plugin
+  import:           defaults, pedantic, warnings
+  if !(flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.Splice
+    Ide.Plugin.Splice.Types
+
+  hs-source-dirs:     plugins/hls-splice-plugin/src
+  build-depends:
+    , aeson
+    , extra
+    , foldl
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , haskell-language-server:hls-refactor-plugin
+    , lens
+    , lsp
+    , mtl
+    , syb
+    , text
+    , transformers
+    , unliftio-core
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-splice-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !(flag(splice) && (impl(ghc < 9.10) || flag(ignore-plugins-ghc-bounds)))
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-splice-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-splice-plugin
+    , hls-test-utils == 2.14.0.0
+    , text
+
+-----------------------------
+-- alternate number format plugin
+-----------------------------
+
+flag alternateNumberFormat
+  description: Enable Alternate Number Format plugin
+  default:     True
+  manual:      True
+
+common alternateNumberFormat
+  if flag(alternateNumberFormat)
+    build-depends: haskell-language-server:hls-alternate-number-format-plugin
+    cpp-options: -Dhls_alternateNumberFormat
+
+library hls-alternate-number-format-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(alternateNumberFormat)
+    buildable: False
+  exposed-modules:  Ide.Plugin.AlternateNumberFormat, Ide.Plugin.Conversion
+  other-modules:    Ide.Plugin.Literals
+  hs-source-dirs:   plugins/hls-alternate-number-format-plugin/src
+  build-depends:
+    , containers
+    , extra
+    , ghcide               == 2.14.0.0
+    , ghc-boot-th
+    , hls-graph
+    , hls-plugin-api       == 2.14.0.0
+    , lens
+    , lsp                  ^>=2.8
+    , mtl
+    , syb
+    , text
+
+  default-extensions:
+    LambdaCase
+    OverloadedStrings
+    RecordWildCards
+
+test-suite hls-alternate-number-format-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(alternateNumberFormat)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-alternate-number-format-plugin/test
+  other-modules:    Properties.Conversion
+  main-is:          Main.hs
+  ghc-options:      -fno-ignore-asserts
+  build-depends:
+    , containers
+    , filepath
+    , haskell-language-server:hls-alternate-number-format-plugin
+    , hls-test-utils       == 2.14.0.0
+    , regex-tdfa
+    , tasty-quickcheck
+    , text
+
+  default-extensions:
+    LambdaCase
+    OverloadedStrings
+    RecordWildCards
+
+-----------------------------
+-- qualify imported names plugin
+-----------------------------
+
+flag qualifyImportedNames
+  description: Enable qualifyImportedNames plugin
+  default:     True
+  manual:      True
+
+common qualifyImportedNames
+  if flag(qualifyImportedNames)
+    build-depends: haskell-language-server:hls-qualify-imported-names-plugin
+    cpp-options: -Dhls_qualifyImportedNames
+
+library hls-qualify-imported-names-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(qualifyImportedNames)
+    buildable: False
+  exposed-modules:  Ide.Plugin.QualifyImportedNames
+  hs-source-dirs:   plugins/hls-qualify-imported-names-plugin/src
+  build-depends:
+    , containers
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp
+    , text
+    , text-rope
+    , dlist
+    , transformers
+
+  default-extensions:
+    DataKinds
+
+test-suite hls-qualify-imported-names-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(qualifyImportedNames)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-qualify-imported-names-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , text
+    , filepath
+    , haskell-language-server:hls-qualify-imported-names-plugin
+    , hls-test-utils             == 2.14.0.0
+
+-----------------------------
+-- code range plugin
+-----------------------------
+
+flag codeRange
+  description: Enable Code Range plugin
+  default:     True
+  manual:      True
+
+common codeRange
+  if flag(codeRange)
+    build-depends: haskell-language-server:hls-code-range-plugin
+    cpp-options: -Dhls_codeRange
+
+library hls-code-range-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(codeRange)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.CodeRange
+    Ide.Plugin.CodeRange.Rules
+  other-modules:
+    Ide.Plugin.CodeRange.ASTPreProcess
+  hs-source-dirs: plugins/hls-code-range-plugin/src
+  build-depends:
+    , containers
+    , deepseq
+    , extra
+    , ghc
+    , ghcide           == 2.14.0.0
+    , hashable
+    , hls-plugin-api   == 2.14.0.0
+    , lens
+    , lsp
+    , mtl
+    , semigroupoids
+    , transformers
+    , vector
+
+test-suite hls-code-range-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(codeRange)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-code-range-plugin/test
+  main-is:          Main.hs
+  other-modules:
+    Ide.Plugin.CodeRangeTest
+    Ide.Plugin.CodeRange.RulesTest
+  build-depends:
+    , bytestring
+    , filepath
+    , haskell-language-server:hls-code-range-plugin
+    , hls-test-utils             == 2.14.0.0
+    , lens
+    , lsp
+    , lsp-test
+    , transformers
+    , vector
+
+-----------------------------
+-- change type signature plugin
+-----------------------------
+
+flag changeTypeSignature
+  description: Enable changeTypeSignature plugin
+  default:     True
+  manual:      True
+
+common changeTypeSignature
+  if flag(changeTypeSignature)
+    build-depends: haskell-language-server:hls-change-type-signature-plugin
+    cpp-options: -Dhls_changeTypeSignature
+
+library hls-change-type-signature-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(changeTypeSignature)
+    buildable: False
+  exposed-modules:  Ide.Plugin.ChangeTypeSignature
+  hs-source-dirs:   plugins/hls-change-type-signature-plugin/src
+  build-depends:
+    , ghcide           == 2.14.0.0
+    , hls-plugin-api   == 2.14.0.0
+    , lens
+    , lsp-types
+    , regex-tdfa
+    , syb
+    , text
+    , transformers
+    , containers
+    , ghc
+  default-extensions:
+    DataKinds
+    ExplicitNamespaces
+    OverloadedStrings
+    RecordWildCards
+
+
+test-suite hls-change-type-signature-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(changeTypeSignature)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-change-type-signature-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-change-type-signature-plugin
+    , hls-test-utils       == 2.14.0.0
+    , regex-tdfa
+    , text
+  default-extensions:
+    OverloadedStrings
+    ViewPatterns
+
+-----------------------------
+-- gadt plugin
+-----------------------------
+
+flag gadt
+  description: Enable gadt plugin
+  default:     True
+  manual:      True
+
+common gadt
+  if flag(gadt)
+    build-depends: haskell-language-server:hls-gadt-plugin
+    cpp-options: -Dhls_gadt
+
+library hls-gadt-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(gadt)
+    buildable: False
+  exposed-modules:  Ide.Plugin.GADT
+  other-modules:    Ide.Plugin.GHC
+  hs-source-dirs:   plugins/hls-gadt-plugin/src
+  build-depends:
+    , aeson
+    , containers
+    , extra
+    , ghc
+    , ghcide                 == 2.14.0.0
+    , ghc-exactprint
+    , hls-plugin-api         == 2.14.0.0
+    , haskell-language-server:hls-refactor-plugin
+    , lens
+    , lsp                    >=2.8
+    , mtl
+    , text
+    , transformers
+
+  default-extensions: DataKinds
+
+test-suite hls-gadt-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(gadt)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-gadt-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-gadt-plugin
+    , hls-test-utils              == 2.14.0.0
+    , text
+
+-----------------------------
+-- explicit fixity plugin
+-----------------------------
+
+flag explicitFixity
+  description: Enable explicitFixity plugin
+  default:     True
+  manual:      True
+
+common explicitFixity
+  if flag(explicitFixity)
+    build-depends: haskell-language-server:hls-explicit-fixity-plugin
+    cpp-options: -DexplicitFixity
+
+library hls-explicit-fixity-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(explicitFixity)
+    buildable: False
+  exposed-modules:  Ide.Plugin.ExplicitFixity
+  hs-source-dirs:   plugins/hls-explicit-fixity-plugin/src
+  build-depends:
+    , containers
+    , deepseq
+    , extra
+    , ghcide                == 2.14.0.0
+    , hashable
+    , hls-plugin-api        == 2.14.0.0
+    , lsp                   >=2.8
+    , text
+
+  default-extensions: DataKinds
+
+test-suite hls-explicit-fixity-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(explicitFixity)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-explicit-fixity-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-explicit-fixity-plugin
+    , hls-test-utils              == 2.14.0.0
+    , text
+
+-----------------------------
+-- explicit fields plugin
+-----------------------------
+
+flag explicitFields
+  description: Enable explicitFields plugin
+  default:     True
+  manual:      True
+
+common explicitFields
+  if flag(explicitFields)
+    build-depends: haskell-language-server:hls-explicit-record-fields-plugin
+    cpp-options: -DexplicitFields
+
+library hls-explicit-record-fields-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(explicitFields)
+    buildable: False
+  exposed-modules:  Ide.Plugin.ExplicitFields
+  build-depends:
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lsp
+    , lens
+    , hls-graph
+    , text
+    , syb
+    , transformers
+    , containers
+    , aeson
+  hs-source-dirs:   plugins/hls-explicit-record-fields-plugin/src
+
+  if flag(pedantic)
+    ghc-options: -Wwarn=incomplete-record-updates
+
+test-suite hls-explicit-record-fields-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(explicitFields)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-explicit-record-fields-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , text
+    , ghcide
+    , haskell-language-server:hls-explicit-record-fields-plugin
+    , hls-test-utils              == 2.14.0.0
+
+-----------------------------
+-- overloaded record dot plugin
+-----------------------------
+
+flag overloadedRecordDot
+  description: Enable overloadedRecordDot plugin
+  default:     True
+  manual:      True
+
+common overloadedRecordDot
+  if flag(overloadedRecordDot)
+    build-depends: haskell-language-server:hls-overloaded-record-dot-plugin
+    cpp-options: -Dhls_overloaded_record_dot
+
+library hls-overloaded-record-dot-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(overloadedRecordDot)
+    buildable: False
+  exposed-modules:  Ide.Plugin.OverloadedRecordDot
+  build-depends:
+    , aeson
+    , ghcide
+    , hls-plugin-api
+    , lsp
+    , lens
+    , hls-graph
+    , text
+    , syb
+    , transformers
+    , containers
+    , deepseq
+  hs-source-dirs:   plugins/hls-overloaded-record-dot-plugin/src
+
+test-suite hls-overloaded-record-dot-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(overloadedRecordDot)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-overloaded-record-dot-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , text
+    , haskell-language-server:hls-overloaded-record-dot-plugin
+    , hls-test-utils              == 2.14.0.0
+
+
+-----------------------------
+-- fourmolu plugin
+-----------------------------
+
+flag fourmolu
+  description: Enable fourmolu plugin
+  default:     True
+  manual:      True
+
+common fourmolu
+  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if flag(fourmolu) && !impl(ghc >= 9.14)
+    build-depends: haskell-language-server:hls-fourmolu-plugin
+    cpp-options: -Dhls_fourmolu
+
+library hls-fourmolu-plugin
+  import:           defaults, pedantic, warnings
+  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(fourmolu) || impl(ghc >= 9.14)
+    buildable: False
+  exposed-modules:  Ide.Plugin.Fourmolu
+  hs-source-dirs:   plugins/hls-fourmolu-plugin/src
+  build-depends:
+    , filepath
+    , fourmolu        ^>= 0.14 || ^>= 0.15 || ^>= 0.16 || ^>=0.17 || ^>=0.18 || ^>=0.19
+    , ghc-boot-th
+    , ghcide          == 2.14.0.0
+    , hls-plugin-api  == 2.14.0.0
+    , lens
+    , lsp
+    , mtl
+    , process-extras  >= 0.7.1
+    , text
+    , transformers
+    , yaml
+
+test-suite hls-fourmolu-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  -- fourmolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(fourmolu) || impl(ghc >= 9.14)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-fourmolu-plugin/test
+  main-is:          Main.hs
+  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648
+  if os(darwin)
+    ghc-options: -optl-Wl,-ld_classic
+  build-tool-depends:
+    fourmolu:fourmolu
+  build-depends:
+    , aeson
+    , containers
+    , filepath
+    , haskell-language-server:hls-fourmolu-plugin
+    , hls-plugin-api
+    , hls-test-utils       == 2.14.0.0
+    , lens
+    , lsp-test
+    , lsp-types
+    , text
+
+-----------------------------
+-- ormolu plugin
+-----------------------------
+
+flag ormolu
+  description: Enable ormolu plugin
+  default:     True
+  manual:      True
+
+common ormolu
+  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if flag(ormolu) && !impl(ghc >= 9.14)
+    build-depends: haskell-language-server:hls-ormolu-plugin
+    cpp-options: -Dhls_ormolu
+
+library hls-ormolu-plugin
+  import:           defaults, pedantic, warnings
+  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(ormolu) || impl(ghc >= 9.14)
+    buildable: False
+  exposed-modules:  Ide.Plugin.Ormolu
+  hs-source-dirs:   plugins/hls-ormolu-plugin/src
+  build-depends:
+    , extra
+    , filepath
+    , ghc-boot-th
+    , ghcide          == 2.14.0.0
+    , hls-plugin-api  == 2.14.0.0
+    , lsp
+    , mtl
+    , process-extras  >= 0.7.1
+    , ormolu          ^>=0.5.3 || ^>= 0.6 || ^>= 0.7 || ^>=0.8
+    , text
+    , transformers
+
+
+test-suite hls-ormolu-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  -- ormolu depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(ormolu) || impl(ghc >= 9.14)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-ormolu-plugin/test
+  main-is:          Main.hs
+  -- Work around https://gitlab.haskell.org/ghc/ghc/-/issues/24648
+  if os(darwin)
+    ghc-options: -optl-Wl,-ld_classic
+  build-tool-depends:
+    ormolu:ormolu
+  build-depends:
+    , aeson
+    , containers
+    , filepath
+    , haskell-language-server:hls-ormolu-plugin
+    , hls-plugin-api
+    , hls-test-utils     == 2.14.0.0
+    , lens
+    , lsp-types
+    , ormolu
+    , text
+
+-----------------------------
+-- stylish-haskell plugin
+-----------------------------
+
+flag stylishHaskell
+  description: Enable stylishHaskell plugin
+  default:     True
+  manual:      True
+
+common stylishHaskell
+  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14
+  if flag(stylishHaskell) && !impl(ghc >= 9.14)
+    build-depends: haskell-language-server:hls-stylish-haskell-plugin
+    cpp-options: -Dhls_stylishHaskell
+
+library hls-stylish-haskell-plugin
+  import:           defaults, pedantic, warnings
+  -- https://github.com/haskell/stylish-haskell/issues/479
+  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(stylishHaskell) || impl(ghc >= 9.14)
+    buildable: False
+  exposed-modules:  Ide.Plugin.StylishHaskell
+  hs-source-dirs:   plugins/hls-stylish-haskell-plugin/src
+  build-depends:
+    , directory
+    , filepath
+    , ghc-boot-th
+    , ghcide           == 2.14.0.0
+    , hls-plugin-api   == 2.14.0.0
+    , lsp-types
+    , mtl
+    , stylish-haskell  >=0.12 && <0.16
+    , text
+
+
+test-suite hls-stylish-haskell-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  -- stylish-haskell depends on ghc-lib-parser which doesn't support GHC 9.14
+  if !flag(stylishHaskell) || impl(ghc >= 9.14)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-stylish-haskell-plugin/test
+  main-is:          Main.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-stylish-haskell-plugin
+    , hls-test-utils              == 2.14.0.0
+
+-----------------------------
+-- refactor plugin
+-----------------------------
+
+flag refactor
+  description: Enable refactor plugin
+  default:     True
+  manual:      True
+
+common refactor
+  if flag(refactor)
+    build-depends: haskell-language-server:hls-refactor-plugin
+    cpp-options: -Dhls_refactor
+
+library hls-refactor-plugin
+  import:           defaults, pedantic, warnings
+  if !flag(refactor)
+    buildable: False
+  exposed-modules:  Development.IDE.GHC.ExactPrint
+                    Development.IDE.GHC.Compat.ExactPrint
+                    Development.IDE.Plugin.CodeAction
+                    Development.IDE.Plugin.CodeAction.Util
+                    Development.IDE.GHC.Dump
+  other-modules:    Development.IDE.Plugin.CodeAction.Args
+                    Development.IDE.Plugin.CodeAction.ExactPrint
+                    Development.IDE.Plugin.CodeAction.PositionIndexed
+                    Development.IDE.Plugin.Plugins.AddArgument
+                    Development.IDE.Plugin.Plugins.Diagnostic
+                    Development.IDE.Plugin.Plugins.FillHole
+                    Development.IDE.Plugin.Plugins.FillTypeWildcard
+                    Development.IDE.Plugin.Plugins.ImportUtils
+  default-extensions:
+    CPP
+    DataKinds
+    DerivingStrategies
+    DerivingVia
+    DuplicateRecordFields
+    ExplicitNamespaces
+    FunctionalDependencies
+    LambdaCase
+    OverloadedStrings
+    PatternSynonyms
+    RecordWildCards
+    ViewPatterns
+  hs-source-dirs:   plugins/hls-refactor-plugin/src
+  build-depends:
+    , ghc
+    , bytestring
+    , ghc-boot
+    , regex-tdfa
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lsp
+    , text
+    , text-rope
+    , transformers
+    , unordered-containers
+    , containers
+    , ghc-exactprint < 1 || >= 1.4
+    , extra
+    , syb
+    , hls-graph
+    , dlist
+    , deepseq
+    , mtl
+    , lens
+    , time
+  if impl(ghc < 9.10)
+    build-depends: data-default
+
+test-suite hls-refactor-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(refactor)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-refactor-plugin/test
+  main-is:          Main.hs
+  other-modules:    Test.AddArgument
+  ghc-options:      -O0
+  build-depends:
+    , data-default
+    , directory
+    , extra
+    , filepath
+    , ghcide:ghcide
+    , haskell-language-server:hls-refactor-plugin
+    , hls-test-utils      == 2.14.0.0
+    , lens
+    , lsp-test
+    , lsp-types
+    , parser-combinators
+    , regex-tdfa
+    , shake
+    , tasty
+    , tasty-hunit
+    , text
+
+-----------------------------
+-- semantic tokens plugin
+-----------------------------
+
+flag semanticTokens
+  description: Enable semantic tokens plugin
+  default:     True
+  manual:      True
+
+common semanticTokens
+  if flag(semanticTokens)
+    build-depends: haskell-language-server:hls-semantic-tokens-plugin
+    cpp-options: -Dhls_semanticTokens
+
+library hls-semantic-tokens-plugin
+  import: defaults, pedantic, warnings
+  if !flag(semanticTokens)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.SemanticTokens
+    Ide.Plugin.SemanticTokens.Types
+    Ide.Plugin.SemanticTokens.Mappings
+  other-modules:
+    Ide.Plugin.SemanticTokens.Query
+    Ide.Plugin.SemanticTokens.SemanticConfig
+    Ide.Plugin.SemanticTokens.Utils
+    Ide.Plugin.SemanticTokens.Tokenize
+    Ide.Plugin.SemanticTokens.Internal
+
+  hs-source-dirs:     plugins/hls-semantic-tokens-plugin/src
+  build-depends:
+    , containers
+    , extra
+    , text-rope
+    , mtl                   >= 2.2
+    , ghc
+    , ghcide                == 2.14.0.0
+    , hls-plugin-api        == 2.14.0.0
+    , lens
+    , lsp                    >=2.8
+    , text
+    , transformers
+    , bytestring
+    , array
+    , deepseq
+    , dlist
+    , hls-graph == 2.14.0.0
+    , template-haskell
+    , data-default
+    , stm
+    , stm-containers
+
+  default-extensions: DataKinds
+
+test-suite hls-semantic-tokens-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(semanticTokens)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-semantic-tokens-plugin/test
+  main-is:          SemanticTokensTest.hs
+
+  build-depends:
+    , aeson
+    , containers
+    , data-default
+    , filepath
+    , ghcide                == 2.14.0.0
+    , haskell-language-server:hls-semantic-tokens-plugin
+    , hls-plugin-api        == 2.14.0.0
+    , hls-test-utils        == 2.14.0.0
+    , lens
+    , lsp
+    , lsp-test
+    , text
+    , text-rope
+
+-----------------------------
+-- notes plugin
+-----------------------------
+
+flag notes
+  description: Enable notes plugin
+  default:     True
+  manual:      True
+
+common notes
+  if flag(notes)
+    build-depends: haskell-language-server:hls-notes-plugin
+    cpp-options: -Dhls_notes
+
+library hls-notes-plugin
+  import: defaults, pedantic, warnings
+  if !flag(notes)
+    buildable: False
+  exposed-modules:
+    Ide.Plugin.Notes
+  hs-source-dirs:     plugins/hls-notes-plugin/src
+  build-depends:
+    , array
+    , ghcide == 2.14.0.0
+    , hls-graph == 2.14.0.0
+    , hls-plugin-api == 2.14.0.0
+    , lens
+    , lsp >=2.8
+    , mtl >= 2.2
+    , regex-tdfa >= 1.3.1
+    , text
+    , text-rope
+    , unordered-containers
+  default-extensions:
+      DataKinds
+    , DeriveAnyClass
+    , DerivingStrategies
+    , OverloadedStrings
+    , LambdaCase
+    , TypeFamilies
+
+test-suite hls-notes-plugin-tests
+  import:           defaults, pedantic, test-defaults, warnings
+  if !flag(notes)
+    buildable: False
+  type:             exitcode-stdio-1.0
+  hs-source-dirs:   plugins/hls-notes-plugin/test
+  main-is:          NotesTest.hs
+  build-depends:
+    , filepath
+    , haskell-language-server:hls-notes-plugin
+    , hls-test-utils == 2.14.0.0
+  default-extensions: OverloadedStrings
+
+----------------------------
+----------------------------
+-- HLS
+----------------------------
+----------------------------
+
+library
+  import:           defaults
+                  , warnings
+                  , pedantic
+                  -- plugins
+                  , cabal
+                  , callHierarchy
+                  , cabalfmt
+                  , cabalgild
+                  , changeTypeSignature
+                  , class
+                  , eval
+                  , importLens
+                  , rename
+                  , retrie
+                  , hlint
+                  , stan
+                  , signatureHelp
+                  , pragmas
+                  , splice
+                  , alternateNumberFormat
+                  , qualifyImportedNames
+                  , codeRange
+                  , gadt
+                  , explicitFixity
+                  , explicitFields
+                  , fourmolu
+                  , ormolu
+                  , stylishHaskell
+                  , refactor
+                  , overloadedRecordDot
+                  , semanticTokens
+                  , notes
+
+  exposed-modules:
+    Ide.Arguments
+    Ide.Main
+    Ide.Version
+    HlsPlugins
+
+  other-modules:    Paths_haskell_language_server
+  autogen-modules:  Paths_haskell_language_server
+  hs-source-dirs:   src
+  build-depends:
+    , aeson-pretty
+    , data-default
+    , directory
+    , extra
+    , filepath
+    , ghc
+    , ghcide                == 2.14.0.0
+    , githash               >=0.1.6.1
+    , hie-bios
+    , hls-plugin-api        == 2.14.0.0
+    , optparse-applicative
+    , optparse-simple
+    , prettyprinter         >= 1.7
+    , process
+    , text
+
+  default-extensions: DataKinds
+
+executable haskell-language-server
+  import:           defaults
+                  , warnings
+                  , pedantic
+  main-is:          Main.hs
+  hs-source-dirs:   exe
+
+  ghc-options:
+    -threaded
+    -- allow user RTS overrides
+    -rtsopts
+    -- disable idle GC
+    -- increase nursery size
+    -- Enable collection of heap statistics
+    "-with-rtsopts=-I0 -A128M -T"
+  if flag(pedantic)
+    ghc-options: -Werror
+  if !os(windows) && flag(dynamic)
+  -- We want to link against the dyn rts just like official GHC binaries do;
+  --   the linked rts determines how external libs are loaded dynamically by TH.
+  -- The standard way of doing this is via the --enable-dynamic-executables Cabal option
+  -- Unfortunately it doesnt' work, see https://github.com/haskell/haskell-language-server/issues/2659
+  -- One can use --ghc-options=-dynamic but this gets applied to the dependencies as well,
+  -- which results in massive rebuilds and incompatibilities with profiling.
+  -- So instead we set the -dynamic flag diretly here.
+    ghc-options: -dynamic
+
+  build-depends:
+    , haskell-language-server
+    , hls-plugin-api
+    , lsp
+    , prettyprinter           >= 1.7
+    , text
+
+  default-extensions: DataKinds
+
+executable haskell-language-server-wrapper
+  import:           defaults
+                  , warnings
+                  , pedantic
+  main-is:          Wrapper.hs
+  hs-source-dirs:   exe
+  other-modules:    Paths_haskell_language_server
+  autogen-modules:  Paths_haskell_language_server
+  ghc-options:
+    -threaded
+    -- allow user RTS overrides
+    -rtsopts
+    -- disable idle GC
+    -- increase nursery size
+    "-with-rtsopts=-I0 -A128M"
+
+  build-depends:
+    , data-default
+    , directory
+    , extra
+    , filepath
+    , ghcide
+    , haskell-language-server
+    , hie-bios
+    , hls-plugin-api
+    , lsp
+    , lsp-types
+    , text
+    , transformers
+    , unliftio-core
+  if !os(windows)
+      build-depends:
+        , unix
+        , containers
+  else
+      build-depends:
+        , process
+
+test-suite func-test
+  import:             defaults
+                    , test-defaults
+                    , warnings
+                    , pedantic
+                    , refactor
+  type:               exitcode-stdio-1.0
+  build-tool-depends:
+    haskell-language-server:haskell-language-server,
+
+  build-depends:
+    , aeson
+    , bytestring
+    , containers
+    , deepseq
+    , extra
+    , filepath
+    , ghcide:ghcide
+    , hashable
+    , hls-plugin-api
+    , hls-test-utils == 2.14.0.0
+    , lens
+    , lsp-test
+    , lsp-types
+    , text
+    , unordered-containers
+
+  hs-source-dirs:     test/functional test/utils
+
+  main-is:            Main.hs
+  other-modules:
+    Config
+    ConfigSchema
+    Format
+    FunctionalBadProject
+    HieBios
+    Progress
+    Test.Hls.Command
+    Test.Hls.Flags
+
+  default-extensions: OverloadedStrings
+
+-- Duplicating inclusion plugin conditions until tests are moved to their own packages
+  if flag(eval)
+    cpp-options: -Dhls_eval
+-- formatters
+  if flag(fourmolu) && (impl(ghc < 9.14) || flag(ignore-plugins-ghc-bounds))
+    cpp-options: -Dhls_fourmolu
+  if flag(ormolu) && (impl(ghc < 9.14) || flag(ignore-plugins-ghc-bounds))
+    cpp-options: -Dhls_ormolu
+
+test-suite wrapper-test
+  import:             defaults
+                    , warnings
+                    , pedantic
+  type:               exitcode-stdio-1.0
+  build-tool-depends:
+    haskell-language-server:haskell-language-server-wrapper,
+    haskell-language-server:haskell-language-server
+
+  build-depends:
+    , extra
+    , hls-test-utils              == 2.14.0.0
+    , process
+
+  hs-source-dirs:     test/wrapper
+  main-is:            Main.hs
+
+benchmark benchmark
+    import:           defaults, warnings
+    -- Depends on shake-bench which is unbuildable after this point
+    type: exitcode-stdio-1.0
+    ghc-options: -threaded
+    main-is: Main.hs
+    hs-source-dirs: bench
+    build-tool-depends:
+        haskell-language-server:ghcide-bench,
+        eventlog2html:eventlog2html,
+    default-extensions:
+        LambdaCase
+        RecordWildCards
+        ViewPatterns
+
+    build-depends:
+      , aeson
+      , containers
+      , data-default
+      , directory
+      , extra
+      , filepath
+      , haskell-language-server:ghcide-bench-lib
+      , haskell-language-server
+      , hls-plugin-api
+      , lens
+      , lens-aeson
+      , shake
+      , shake-bench == 0.2.*
+      , text
+      , yaml
+
+flag test-exe
+  description: Build the ghcide-test-preprocessor executable
+  default:     True
+
+executable ghcide-test-preprocessor
+  import: warnings
+  default-language:   GHC2021
+  hs-source-dirs:   ghcide-test/preprocessor
+  main-is:          Main.hs
+  build-depends:    base >=4 && <5
+
+  if !flag(test-exe)
+    buildable: False
+
+test-suite ghcide-tests
+  import: warnings, defaults
+  type:               exitcode-stdio-1.0
+  default-language:   GHC2021
+  build-tool-depends:
+    , ghcide:ghcide
+    , haskell-language-server:ghcide-test-preprocessor
+    , implicit-hie:gen-hie
+
+  build-depends:
+    , aeson
+    , containers
+    , data-default
+    , directory
+    , enummapset
+    , extra
+    , filepath
+    , ghcide
+    , hls-plugin-api
+    , lens
+    , list-t
+    , lsp
+    , lsp-test                ^>=0.18.0
+    , lsp-types
+    , mtl
+    , network-uri
+    , QuickCheck
+    , random
+    , regex-tdfa              ^>=1.3.1
+    , shake
+    , sqlite-simple
+    , stm
+    , stm-containers
+    , tasty
+    , tasty-expected-failure
+    , tasty-hunit             >=0.10
+    , tasty-quickcheck
+    , tasty-rerun
+    , text
+    , text-rope
+    , unordered-containers
+    , hls-test-utils == 2.14.0.0
+
+  if impl(ghc <9.3)
+    build-depends: ghc-typelits-knownnat
+
+  hs-source-dirs:     ghcide-test/exe
+  ghc-options:        -threaded -O0
+
+  main-is:            Main.hs
+  other-modules:
+    Config
+    AsyncTests
+    BootTests
+    ClientSettingsTests
+    CodeLensTests
+    CompletionTests
+    ConstructorHoverTests
+    CPPTests
+    CradleTests
+    DependentFileTest
+    DiagnosticTests
+    ExceptionTests
+    FindDefinitionAndHoverTests
+    FindImplementationAndHoverTests
+    FuzzySearch
+    GarbageCollectionTests
+    HaddockTests
+    HieDbRetry
+    HighlightTests
+    Hover
+    IfaceTests
+    InitializeResponseTests
+    LogType
+    NonLspCommandLine
+    OpenCloseTest
+    OutlineTests
+    PluginSimpleTests
+    PositionMappingTests
+    PreprocessorTests
+    Progress
+    ReferenceTests
+    ResolveTests
+    RootUriTests
+    SafeTests
+    SymlinkTests
+    THTests
+    UnitTests
+    WatchedFileTests
+
+  -- Tests that have been pulled out of the main file
+  default-extensions:
+    LambdaCase
+    OverloadedStrings
+    RecordWildCards
+    ViewPatterns
+
+flag ghcide-bench
+  description: Build the ghcide-bench executable
+  default:     True
+
+executable ghcide-bench
+    import: defaults
+    if !flag(ghcide-bench)
+      buildable: False
+    build-depends:
+        aeson,
+        bytestring,
+        containers,
+        data-default,
+        extra,
+        filepath,
+        hls-plugin-api,
+        hls-test-utils,
+        lens,
+        lsp-test,
+        lsp-types,
+        optparse-applicative,
+        process,
+        safe-exceptions,
+        hls-graph,
+        shake,
+        tasty-hunit >= 0.10,
+        text,
+        haskell-language-server:ghcide-bench-lib,
+    hs-source-dirs: ghcide-bench/exe
+    ghc-options: -threaded -Wall -Wno-name-shadowing -rtsopts
+    main-is: Main.hs
+    default-extensions:
+        LambdaCase
+        OverloadedStrings
+        RecordWildCards
+        ViewPatterns
+
+library ghcide-bench-lib
+    import: defaults
+    hs-source-dirs: ghcide-bench/src
+    ghc-options: -Wall -Wno-name-shadowing
+    exposed-modules:
+        Experiments.Types
+        Experiments
+    build-depends:
+        aeson,
+        async,
+        binary,
+        bytestring,
+        deepseq,
+        directory,
+        extra,
+        filepath,
+        ghcide:{ghcide},
+        hashable,
+        lens,
+        lsp-test,
+        lsp-types,
+        optparse-applicative,
+        parser-combinators,
+        process,
+        safe-exceptions,
+        shake,
+        text,
+        hls-test-utils,
+        row-types
+    default-extensions:
+        LambdaCase
+        RecordWildCards
+        ViewPatterns
+
+
+test-suite ghcide-bench-test
+    import: defaults
+    type: exitcode-stdio-1.0
+    build-tool-depends:
+        ghcide:ghcide,
+    main-is: Main.hs
+    hs-source-dirs: ghcide-bench/test
+    ghc-options: -Wunused-packages
+    ghc-options: -threaded -Wall
+    build-depends:
+        extra,
+        haskell-language-server:ghcide-bench-lib,
+        lsp-test ^>= 0.18,
+        tasty,
+        tasty-hunit >= 0.10,
+        tasty-rerun
+    default-extensions:
+        LambdaCase
+        OverloadedStrings
+        RecordWildCards
+        ViewPatterns
+
+flag plugin-tutorial
+  description: Build the plugin tutorial executable
+  default:     True
+  manual:      True
+
+executable plugin-tutorial
+  import: defaults
+  -- The plugin tutorial is only compatible with 9.6 and 9.8.
+  -- No particular reason, just to avoid excessive CPP.
+  if flag(plugin-tutorial) && (impl(ghc >= 9.6) && impl(ghc < 9.10))
+    buildable: True
+  else
+    buildable: False
+  ghc-options: -pgmL markdown-unlit
+  main-is: docs/contributing/plugin-tutorial.lhs
+  build-tool-depends: markdown-unlit:markdown-unlit
+  build-depends:
+    base,
+    ghcide,
+    hls-plugin-api,
+    aeson,
+    lsp,
+    lsp-types,
+    markdown-unlit,
+    text,
+    unordered-containers,
+    containers,
+    transformers,
+    ghc,