mirror of
https://github.com/haskell/ghcide.git
synced 2024-12-04 05:24:33 +03:00
78d4031f7c
* Add a custom prefix to command IDs A client can run more than one instance of ghcide. Some clients have a global command registry, and all commands must be unique in that registry. So to make the command ids unique, prefix them with the ghcide server process id, as is done in haskell-ide-engine. * Use same command naming scheme as in haskell-language-server To ease interoperability * Use makeLspCommandId for prefixing commands This puts all the prefixing logic in one place. * Add hlint exception for CPP in Development.IDE.Compat * Bring in Win32 dependency for windows build
131 lines
4.6 KiB
YAML
131 lines
4.6 KiB
YAML
# HLint configuration file
|
|
# https://github.com/ndmitchell/hlint
|
|
##########################
|
|
|
|
# To run HLint do:
|
|
# $ hlint --git -j4
|
|
|
|
# Warnings currently triggered by our code
|
|
- ignore: {name: "Use <$>"}
|
|
- ignore: {name: "Use :"}
|
|
- ignore: {name: "Redundant do"}
|
|
- ignore: {name: "Avoid lambda"}
|
|
- ignore: {name: "Use newtype instead of data"}
|
|
- ignore: {name: "Use fromMaybe"}
|
|
- ignore: {name: "Use unless"}
|
|
- ignore: {name: "Move brackets to avoid $"}
|
|
- ignore: {name: "Eta reduce"}
|
|
- ignore: {name: "Parse error"}
|
|
- ignore: {name: "Reduce duplication"}
|
|
- ignore: {name: "Use ++"}
|
|
- ignore: {name: "Use $>"}
|
|
- ignore: {name: "Use section"}
|
|
- ignore: {name: "Use record patterns"}
|
|
- ignore: {name: "Use camelCase"}
|
|
- ignore: {name: "Use uncurry"}
|
|
- ignore: {name: "Avoid lambda using `infix`"}
|
|
|
|
# Off by default hints we like
|
|
- warn: {name: Use module export list}
|
|
|
|
# Condemn nub and friends
|
|
- warn: {lhs: nub (sort x), rhs: Data.List.Extra.nubSort x}
|
|
- warn: {lhs: nub, rhs: Data.List.Extra.nubOrd}
|
|
- warn: {lhs: nubBy, rhs: Data.List.Extra.nubOrdBy}
|
|
- warn: {lhs: Data.List.Extra.nubOn, rhs: Data.List.Extra.nubOrdOn}
|
|
|
|
# DA specific hints
|
|
- warn: {lhs: Data.Text.pack (DA.Pretty.renderPlain x), rhs: DA.Pretty.renderPlain x}
|
|
- warn: {lhs: Data.Text.Extended.pack (DA.Pretty.renderPlain x), rhs: DA.Pretty.renderPlain x}
|
|
- warn: {lhs: DA.Pretty.renderPlain (DA.Pretty.pretty x), rhs: DA.Pretty.renderPretty x}
|
|
- warn: {lhs: Data.Text.readFile, rhs: Data.Text.Extended.readFileUtf8}
|
|
- warn: {lhs: Data.Text.writeFile, rhs: Data.Text.Extended.writeFileUtf8}
|
|
- warn: {lhs: Data.Text.Lazy.readFile, rhs: Data.Text.Extended.readFileUtf8}
|
|
- warn: {lhs: Data.Text.Lazy.writeFile, rhs: Data.Text.Extended.writeFileUtf8}
|
|
- warn: {lhs: System.Environment.setEnv, rhs: System.Environment.Blank.setEnv}
|
|
|
|
# Specify additional command line arguments
|
|
#
|
|
- arguments: ["--cpp-include=include"]
|
|
|
|
- extensions:
|
|
- default: true
|
|
|
|
# Extensions enabled by `bazel` and `da-ghci` by default. We ban them here
|
|
# to avoid useless pragmas piling up on the top of files.
|
|
- {name: BangPatterns, within: []}
|
|
- {name: DeriveDataTypeable, within: []}
|
|
- {name: DeriveFoldable, within: []}
|
|
- {name: DeriveFunctor, within: []}
|
|
- {name: DeriveGeneric, within: []}
|
|
- {name: DeriveTraversable, within: []}
|
|
- {name: FlexibleContexts, within: []}
|
|
- {name: GeneralizedNewtypeDeriving, within: []}
|
|
- {name: LambdaCase, within: []}
|
|
- {name: NamedFieldPuns, within: []}
|
|
- {name: OverloadedStrings, within: []}
|
|
- {name: PackageImports, within: []}
|
|
- {name: RecordWildCards, within: []}
|
|
- {name: ScopedTypeVariables, within: []}
|
|
- {name: StandaloneDeriving, within: []}
|
|
- {name: TupleSections, within: []}
|
|
- {name: TypeApplications, within: []}
|
|
- {name: ViewPatterns, within: []}
|
|
|
|
# Shady extensions
|
|
- {name: ImplicitParams, within: []}
|
|
- name: CPP
|
|
within:
|
|
- Development.IDE.Compat
|
|
- Development.IDE.Core.FileStore
|
|
- Development.IDE.Core.Compile
|
|
- Development.IDE.GHC.Compat
|
|
- Development.IDE.GHC.Util
|
|
- Development.IDE.Import.FindImports
|
|
- Development.IDE.Spans.Calculate
|
|
- Development.IDE.Spans.Documentation
|
|
- Development.IDE.Spans.Common
|
|
- Development.IDE.Plugin.CodeAction
|
|
- Development.IDE.Plugin.Completions
|
|
- Development.IDE.Plugin.Completions.Logic
|
|
- Main
|
|
|
|
- flags:
|
|
- default: false
|
|
- {name: [-Wno-missing-signatures, -Wno-orphans, -Wno-overlapping-patterns, -Wno-incomplete-patterns, -Wno-missing-fields, -Wno-unused-matches]}
|
|
- {name: [-Wno-dodgy-imports], within: Main}
|
|
# - modules:
|
|
# - {name: [Data.Set, Data.HashSet], as: Set} # if you import Data.Set qualified, it must be as 'Set'
|
|
# - {name: Control.Arrow, within: []} # Certain modules are banned entirely
|
|
#
|
|
- functions:
|
|
# Things that are unsafe in Haskell base library
|
|
- {name: unsafeInterleaveIO, within: []}
|
|
- {name: unsafeDupablePerformIO, within: []}
|
|
- {name: unsafeCoerce, within: []}
|
|
# Things that are a bit dangerous in the GHC API
|
|
- {name: nameModule, within: []}
|
|
|
|
# Add custom hints for this project
|
|
#
|
|
# Will suggest replacing "wibbleMany [myvar]" with "wibbleOne myvar"
|
|
# - error: {lhs: "wibbleMany [x]", rhs: wibbleOne x}
|
|
|
|
# Turn on hints that are off by default
|
|
#
|
|
# Ban "module X(module X) where", to require a real export list
|
|
# - warn: {name: Use explicit module export list}
|
|
#
|
|
# Replace a $ b $ c with a . b $ c
|
|
# - group: {name: dollar, enabled: true}
|
|
#
|
|
# Generalise map to fmap, ++ to <>
|
|
# - group: {name: generalise, enabled: true}
|
|
|
|
# Ignore some builtin hints
|
|
# - ignore: {name: Use let}
|
|
# - ignore: {name: Use const, within: SpecialModule} # Only within certain modules
|
|
|
|
# Define some custom infix operators
|
|
# - fixity: infixr 3 ~^#^~
|