1.1.0
Haskell Language Server 1.1.0 has finally come! Many thanks to all contributors -- since the last release, we have merged over 100 PRs!
As always, there are many internal bug fixes and performance improvements in ghcide. Apart from that,
- Wingman gets many enhancements, thanks to @isovector for this epic work!
- Wingman actions can now be bound to editor hotkeys
- Experimental support for "jump to next unsolved hole"
- Improved layout algorithm --- don't reflow instances, or break do-blocks
- Wingman can now deal with GADTs, rank-n types and pattern synonyms
- Wingman now respects user-written bindings on the left side of the equals sign
- Significantly more-natural synthesized code when dealing with newtypes, infix operators, records and strings
- Improved user experience --- less waiting, and friendly errors for when things go wrong
- hlint plugin not working in some cases gets fixed
- annoying log message "haskell-lsp:incoming message parse error" gets fixed in
lsp-1.2
- eval plugin now supports
it
variable, like GHCi - verbose message "No cradle found for ... Proceeding with implicit cradle" is GONE
- type lenses plugin now has its custom config
mode
(enum) [always
] to control its working mode:always
: always displays type signature lenses of global bindingsexported
: similar toalways
, but only displays for exported global bindingsdiagnostics
: follows diagnostic messages produced by GHC
- top-level LSP option
completionSnippetsOn
andmaxNumberOfProblems
are deprecated - completions plugin now has its custom config:
autoExtendOn
(boolean) [true
]: whether to enable auto extending import listssnippetsOn
(boolean) [true
]: wheter to enable completion snippets, taking the place ofcompletionSnippetsOn
- Wingman has its custom config:
timeout_duration
(integer) [2
]: the timeout for Wingman actions, in secondsfeatures
(string) [""
]: feature set used by Wingman (See the README of Wingman)max_use_ctor_actions
(integer) [5
]: maximum number ofUse constructor <x>
code actions that can appearhole_severity
(enum) [none
]: the severity to use when showing hole diagnostics
- LSP symbols of typeclass and type families are more appropriate
- test suite of plugins are reorganized, which no longer need to be run with
test-server
executable - two new packages
hls-test-utils
andhls-stylish-haskell-plugin
are extracted
This version uses lsp-1.2.0
, hls-plugin-api-1.1.0
, and ghcide-1.2.0.2
.
Pull requests merged for 1.1.0
- Restore compat. with haddock-library 1.8
(#1717) by @pepeiborra - Don't suggest destruct actions for already-destructed terms
(#1715) by @isovector - Add keybindings and jump to hole to the Wingman README
(#1712) by @isovector - Bracketing for snippet completions
(#1709) by @OliverMadine - Prepare ghcide 1.2.0
(#1707) by @berberman - Adjust bounds
(#1701) by @berberman - Update nix
(#1699) by @berberman - Wingman: "Destruct all" only on ADTs
(#1695) by @isovector - Fix ghcide and HLS enter lsp mode by default
(#1692) by @berberman - Decrease Wingman timeout from 3.3 minutes to 2 seconds (configurable)
(#1688) by @isovector - Wrap test suite of tactics plugin into tasty test tree
(#1676) by @berberman - Wingman: Use infix notation for operator applications
(#1675) by @isovector - Ignore ghcide tests by paths
(#1673) by @jneira - Ignore nix job steps by path
(#1672) by @jneira - Intelligent derivations of Semigroup and Monoid for Wingman
(#1671) by @isovector - optimize ambiguity import suggestions
(#1669) by @July541 - Replace Barrier with MVar in lsp main
(#1668) by @berberman - ghcide - enable ApplicativeDo everywhere
(#1667) by @pepeiborra - support custom Ide commands
(#1666) by @pepeiborra - Add bounds for Diff
(#1665) by @berberman - Update shake bounds of install script
(#1664) by @berberman - Avoid creating IsFileOfInterest keys for non workspace files
(#1661) by @pepeiborra - additional .gitignore entries
(#1659) by @pepeiborra - Skip tracing unless eventlog is enabled
(#1658) by @pepeiborra - Fix a wingman bug caused by mismanaged stale data
(#1657) by @isovector - Fix ignore paths
(#1656) by @jneira - Shut the Shake session on exit, instead of restarting it
(#1655) by @pepeiborra - Emit holes as diagnostics
(#1653) by @isovector - log exceptions before killing the server
(#1651) by @pepeiborra - Do not override custom commands
(#1650) by @pepeiborra - Fix importing type operators
(#1644) by @berberman - Add haskell-language-server-bin to Arch Linux section
(#1642) by @marcin-rzeznicki - Update ISSUE_TEMPLATE.md
(#1640) by @Ailrun - Civilized indexing progress reporting
(#1633) by @pepeiborra - Update to lsp-1.2
(#1631) by @wz1000 - Avoid reordering plugins
(#1629) by @pepeiborra - Run plugins' test suites with server in the same process
(#1628) by @berberman - Remove ignored paths
(#1623) by @jneira - Update formatting hooks to not include Wingman
(#1622) by @Ailrun - Add CPP Options for Stylish Haskell & Brittany Formatters
(#1620) by @prikhi - Use custom config for completions plugin
(#1619) by @berberman - Configurable I/O handles
(#1617) by @pepeiborra - Add installation instructions for Arch Linux
(#1616) by @berberman - Properly pass argFiles into defaultMain
(#1613) by @mpickering - Migrate tests of plugins
(#1612) by @berberman - Allow for customizable Haskell views of Property types
(#1608) by @isovector - Extract hls-test-utils
(#1606) by @berberman - Add test data files to extra-source-files
(#1605) by @jneira - Extract stylish-haskell plugin into a standalone package
(#1604) by @berberman - Eval plugin: evaluate expressions as statements
(#1603) by @berberman - Bump haddock-library to 1.10.0
(#1598) by @berberman - Relax ghcides upper bound on base16-bytestring
(#1595) by @maralorn - Use CiInterface/SkInterface for typeclass symbols
(#1592) by @fwcd - Avoid duplicating known targets and import paths
(#1590) by @pepeiborra - Add ability for plugins to handle file change notifications
(#1588) by @pepeiborra - Ensure eval plugin Print class doesn't rely on Prelude being in scope
(#1587) by @akrmn - Give a canonical ordering for destructing terms in Wingman
(#1586) by @isovector - Try a homomorphic destruct before a standard destruct
(#1582) by @isovector - Update homepage and other urls for ghcide
(#1580) by @felixonmars - Regularize custom config of plugins
(#1576) by @berberman - Cleanup the TacticProviders interface
(#1572) by @isovector - Add custom code action kinds for import related code actions
(#1570) by @berberman - bump retrie plugin version
(#1569) by @pepeiborra - Use ConLikes instead of DataCons
(#1568) by @isovector - Remove max number of problems config option
(#1567) by @jneira - Prepare ghcide 1.1.0
(#1566) by @pepeiborra - Use string literals to synthesize the empty string
(#1564) by @isovector - Add wingman branding to code actions
(#1555) by @isovector - Use TextEdit to insert new imports
(#1554) by @berberman - Introduce strict versions of modifyVar to improve contention
(#1553) by @pepeiborra - Improve how wingman uses evidence
(#1549) by @isovector - Review early cutoff fingerprints
(#1547) by @pepeiborra - Improve thread contention around diagnostics
(#1546) by @pepeiborra - Be much more intelligent about splitting matches
(#1543) by @isovector - Update nixpkgs to ghc 8.10.4
(#1538) by @berberman - Log a warning for every diagnostic received when doDiagnostics=False
(#1537) by @pepeiborra - Fix missing parens of auto extending imports
(#1526) by @berberman - Change Wingman module structure, address -Wall
(#1519) by @isovector - Pull Wingman's method hypotheses directly from in-scope dicts
(#1517) by @isovector - Avoid redundant work in diagnostics pass
(#1514) by @pepeiborra - Add an option to control progress reporting
(#1513) by @pepeiborra - Package ghcide code actions
(#1512) by @berberman - Demote implicit cradle warn to logging
(#1511) by @jneira - Set all plugin flags to manual
(#1510) by @jneira - Avoid always rerunning GetModificationTime for interface files too
(#1506) by @pepeiborra - Let Wingman's apply tactic run endomorphisms
(#1505) by @isovector - Make Wingman produce user-facing error messages
(#1502) by @isovector - Disable HLS benchmarks
(#1501) by @wz1000 - Add kind and preferred flag for all Wingman code actions
(#1499) by @isovector - Organize Wingman tests
(#1498) by @isovector - Register IDE configuration when called via the command line
(#1495) by @wz1000 - Haddock upper bound
(#1492) by @jneira - Make type lenses plugin configurable
(#1491) by @berberman - Context-aware ExactPrint grafting for HsExpr
(#1489) by @isovector - Drive GetModificationTime using watched file events
(#1487) by @pepeiborra - Faster ModSummary fingerprints
(#1485) by @pepeiborra - Revert all changes to hie-compat since 11b5c2e
(#1484) by @wz1000 - Fix non-determinism in boot-def test
(#1483) by @wz1000 - Hackage needs autogen-modules
(#1481) by @jneira - Ignore ci for some subdirectories and files
(#1480) by @jneira - Split plugin tests into two cabal projects
(#1479) by @wz1000 - Less aggressive refine tactic
(#1475) by @isovector - Enable hls-tactics-plugin tests in CI
(#1474) by @isovector - Generate a more robust top-level binding Provenance
(#1473) by @isovector - Add new variables to the extract when doing intros
(#1472) by @isovector - Bump up hlint plugin version
(#1469) by @jneira - Make sure split respects GADT equalities
(#1466) by @isovector - Add "Split all function arguments" code action
(#1464) by @isovector - Add "Refine hole" code action
(#1463) by @isovector - Implement "use constructor" code action
(#1461) by @isovector - Remove tactics src-dir from func-test
(#1460) by @isovector - Make sure to give the correct DynFlags to the recompilation checker
(#1459) by @pepeiborra - Don't use record notation for single-field datacons in tactics
(#1456) by @isovector - update IRC channel name in plugin tutorial
(#1455) by @shapr - Update readme and cabal for Wingman
(#1454) by @isovector - Remove recursion tracking from TacticState
(#1453) by @isovector - Use runtime ghc libdir for ghc-exactprint and ghc-8.10
(#1451) by @jneira - Simplify tactics state structure
(#1449) by @isovector - Extract the qualified name from already imported module
(#1445) by @berberman - Correct megaparsec lower bound
(#1441) by @jneira - Reformat all files
(#1439) by @Ailrun - Customize the unitId used for the fake internal component
(#1435) by @pepeiborra - Minor performance optimizations
(#1432) by @pepeiborra