4.0.0
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[4.0.0] - 2024-07-26
BREAKING CHANGES
- Require Neovim
>= 0.10
- Rename types in LuaCATS annotations and vimdoc.
- Merge
HlsStart
,HlsStop
,HlsRestart
andHlsEvalAll
intoHls
start
,stop
,restart
andevalAll
subcommands. - Merge
HsRepl*
commands intoHaskell repl *
subcommands. - Merge
HsProjectFile
HsPackageYaml
andHsPackageCabal
commands
intoHaskell {projectFile|packageYaml|packageCabal}
subcommands. - Merge logging commands into respective
Haskell log
subcommands.
Added
- Repl: subcommands for remaining Lua functions:
paste_type
,cword_type
,paste_info
,cword_info
.
[3.1.10] - 2024-05-30
Fixed
- LSP: Force-extend Neovim's default client capabilities
with detected plugin capabilities, to ensure plugin capability
extensions take precedence in case of conflict.
[3.1.9] - 2024-05-04
Changed
- Add compatibility layers for Neovim API that has been
deprecated in Neovim nightly.
[3.1.8] - 2024-02-23
Reverted
- Don't run
ftplugin
more than once on the same buffer.
This prevented the LSP client from reattaching when
running:e
.
[3.1.7] - 2024-02-20
Fixed
- Missing vimdoc in generated helpfile.
[3.1.6] - 2024-01-27
Performance
- Don't run
ftplugin
more than once on the same buffer.
[3.1.5] - 2024-01-25
Changed
- Initialization: Lazy-require
haskell-tools
fields.
This prevents configs from being initialized early if
callingrequire('haskell-tools')
before setting
vim.g.haskell_tools
.
[3.1.4] - 2024-01-20
Fixed
- Hoogle: Don't escape URLs when opening in browser [#336].
[3.1.3] - 2024-01-11
Fixed
- LSP: Add safety to
:HlsRestart
command,
to prevent it from retrying indefinitely.
[3.1.2] - 2024-01-10
Fixed
- Hoogle (web): Error handling for invalid
curl
output [#322].
[3.1.1] - 2023-12-22
Fixed
- Health: Only report error if
lspconfig.hls
has been set up,
not other configurations.
[3.1.0] - 2023-12-18
Added
- Health: Warn if there are unrecognized configs in
vim.g.haskell_tools
.
Fixed
- Health: Check if
vim.g.haskell_tools
is set,
but hasn't been sourced before initialization. - Hoogle (web): Make
curl
silent.
[3.0.2] - 2023-11-25
Fixed
- Remove default setting for
cabalFormattingProvider
,
falling back to haskell-language-server's default.
[3.0.1] - 2023-11-23
Fixed
- Don't attempt to generate project tags if no project root is found.
[3.0.0] - 2023-10-28
Changed
- Remove
plenary.nvim
dependency.
POTENTIALLY BREAKING: This should not break anything, but removing a dependency is worth
a major version bump, just in case.
NOTE:plenary.nvim
is still a dependency oftelescope.nvim
. - POTENTIALLY BREAKING: Bump minimum Neovim version requirement to
0.9
.
This plugin may still work with Neovim0.8
, but its compatibility is not tested. - New, fabulous logo.
Added
- Add filetype information to the LSP client #275.
[2.4.0] - 2023-10-13
Added
vim.g.haskell_tools
can now also be a function that returns
a configuration table.HlsLog
andHtLog
,HtSetLogLevel
commands.
Fixed
- Configure
haskell-language-server
to log to a temporary file by default,
to prevent huge log files #264.
Changed
- Don't send an error notification if the name of the buffer
cannot be determined when starting the LSP client. checkhealth
: Report on whether or notvim.g.haskell_tools
is set.
[2.3.0] - 2023-09-20
Added
- Health: Check for conflicting
lspconfig.hls
configuration. - New commands:
HlsEvalAll
,HtReplToggle
,HtReplQuit
,HtReplLoad
,HtReplReload
Fixed
- Builtin repl: Broken toggle
[2.2.0] - 2023-09-12
Added
- Automatically add
foldingRange
LSP client capabilities ifnvim-ufo
is installed.
[2.1.0] - 2023-09-10
Added
- Automatically discover debug adapter launch configurations if
nvim-dap
andhaskell-debug-adapter
are detected.
This can be disabled by setting thevim.g.haskell_tools.dap.auto_discover
option tofalse
.
Fixed
- Hoogle replace (
<C-r>
) no longer switches to insert mode.
[2.0.2] - 2023-09-02
Fixed
- Hover: Decode url-encoded (type-)definition paths in hover actions (#238).
[2.0.1] - 2023-09-01
Fixed
- Re-add public
haskell-tools.log
API.
[2.0.0] - 2023-08-27
Changed
- New, more stable architecture.
- BREAKING: Remove
setup
API. - BREAKING: Remove
start_or_attach
API.
vim.g.haskell_tools
can be used for configuration instead. - BREAKING:
haskell-tools
now
automatically initialises and attaches when opening a Haskell or Cabal file.
You can fine-tune this behaviour in the config. - BREAKING: Removed
haskell-tools.dap.nvim_dap
(copy of thedap
module). - BREAKING configuration changes:
hover.disable
has been changed tohover.enable
for consistency.hls_log
(undocumented) has been moved tohls.logfile
.
- Repl: Add
--ghc-option -Wwarn
tocabal repl
command.
Added
- Only attach cabal LSP clients if using
haskell-language-server > 1.9.0.0
. - By default, fall back to
haskell-language-server
ifhaskell-language-server-wrapper
is not found #233.
Fixed
- LSP client: Don't fail if
hls.on_attach
fails.
[1.11.3] - 2023-08-06
Fixed
- Fix bug that broke codelens auto-refresh and lsp stop/restart #229.
[1.11.2] - 2023-08-03
Fixed
- Cabal: Do not advertise
server_capabilities
forfoldingRangeProvider
andselectionRangeProvider
(#223).
Prevents error messages caused by plugins that provide LSP client capabilities that are
not built-in to Neovim.
[1.11.1] - 2023-07-17
Fixed
- Hover: Fix error message when using go-to-definition/typeDefinition hover actions
with neovim-nightly (10.x).
[1.11.0] - 2023-07-05
Changed
- Improvements to type signature detection from
textDocument/hover
docs.
Added
- Hover: Hoogle search entries for all detected type signatures.
Fixed
- repl: If both stack and cabal files are present, prefer stack if it is installed.
This is configurable with the optiontools.repl.prefer
.
[1.10.2] - 2023-05-22
Fixed
- Do not use deprecated health check API in neovim > 0.9.
- Health checks: Parsing of dependency versions without a newline causes error message.
[1.10.1] - 2023-05-4
Fixed
- Typo in
dap
module potentially leading to errors on warning logs.
[1.10.0] - 2023-04-17
Added
- Support for
nvim-dap
withhaskell-debug-adapter
,
an experimental debug adapter for Haskell.
[1.9.7] - 2023-04-15
Fixed
- Remove some prints.
[1.9.6] - 2023-04-09
Fixed
- Loading files with
'builtin'
repl handler (#177).
[1.9.5] - 2023-04-06
Fixed
- Prevent infinite recursion on strange operating systems in path iteration (#171).
[1.9.4] - 2023-04-02
Fixed
- Repl: Detection of single-package cabal projects.
- Hoogle (web): URL escaping.
Changed
- Remove rockspec (not needed, due to luarocks-tag-release-workflow).
HsProjectFile
: Trystack.yml
first, then fall back tocabal.project
and then to*.cabal
.
[1.9.3] - 2023-03-08
Fixed
- Silent failure and unexpected error message if
haskell-language-server
executable is not found (#154).
[1.9.2] - 2023-03-06
Fixed
- Initialisation of client capabilities when
nvim-cmp
is not installed.
[1.9.1] - 2023-02-20
Fixed
- Typo in the logfile name.
[1.9.0] - 2023-02-17
Added
- LSP: Evaluate all code snippets in comments at once.
- Support setup in ftplugin/haskell.lua.
Fixed
- Check if attached LSP client supports codeLens before refreshing.
- Telescope extension can now be registered before haskell-tools has been setup.
[1.8.0] - 2023-02-03
Changed
- Set up LSP client without
nvim-lspconfig
(removes the dependency). - Hover actions: Shorten locations relative to file, package or project.
- Only show definition/typeDefinition hover actions if they are in different locations.
Added
- Rockspec for automatic dependency management by LuaRocks-compatible plugin managers.
- LuaRocks tag release workflow.
HlsStart
,HlsStop
andHlsRestart
commands.- Dynamically load
haskell-language-server
settings JSON from project root, if available. - Health checks, runnable with
:checkhealth haskell-tools
. - Validate configs during setup.
- Hover action for
textDocument/typeDefinition
.
[1.7.0] - 2023-01-27
Fixed
- Fall back to hoogle browser search if telescope is not set up.
Changed
- Do not set a default layout for telescope Hoogle search.
[1.6.0] - 2023-01-21
Added
- Ability to temporarily set the log level via
ht.log.set_level(level)
. tools.repl.auto_focus
option.- Vimdocs
Fixed
- repl.toggleterm: Do not close on failure.
- repl: Quote file names.
[1.5.1] - 2023-01-08
Fixed
- Set default log level to
vim.log.levels.WARN
.
[1.5.0] - 2023-01-08
Added
- Support for
hls-cabal-plugin
andhls-cabal-fmt
plugins. - Add logging
Fixed
- Packer init in minimal config for reproducing issues locally.
[1.4.4] - 2022-12-20
Fixed
- Pass the custom options to hoogle telescope, so that users' custom telescope
themes, etc. can be supported.
[1.4.3] - 2022-12-06
Fixed
- Error message shown if hoogle is installed, but telescope is missing
[1.4.2] - 2022-11-19
Fixed
- Bug causing hls to always use default settings
- Prevent concatenatenation with nil on tags generation if package root can't be found
[1.4.1] - 2022-11-19
Fixed
- Project tags not being generated on session start
[1.4.0] - 2022-11-18
Added
- Automatically generate project & package tags if
fast-tags
is installed. - Configuration for falling back to hoogle search if
vim.lsp.definition
fails. - Nix flake setup.
Fixed
- Hover actions improvements:
- Always show 'Go to definition' if location is found.
- Offer Hoogle search for package <> name if location is not found.
- Hoogle search: Replace multiple whitespace with single space.
- CodeLens: Only auto-refresh on buffer the LSP client has attached to.
[1.3.0] - 2022-11-14
Added
- Hover actions
- Command for loading files into the repl.
- Ability to paste multiple valid Haskell lines into the repl.
repl.paste_info
andrepl.cword_info
functions.- Telescope live_grep and find_files commands for current package
- Register Telescope extension
Fixed
- Fix broken
<C-b>
keymap to open Hoogle entry in the browser
[1.2.0] - 2022-11-09
Added
- GHCi repl integration: Automagically detect the command to start GHCi and load the current buffer.
- Interact with the GHCi repl from any buffer using lua functions.
:HsProjectFile
,:HsPackageYaml
and:HsPackageCabal
commands to open project/package files for the current buffer.
Changed
- Do not close Hoogle Telescope prompt on
<C-b>
(open hackage docs in browser).
Fixed
- Auto-refresh code lenses only for Haskell files
[1.1.0] - 2022-10-29
Added
- Keymap to replace word under cursor when hoogling type signature
Fixed
- Fix broken telescope hoogle_attach_mappings call, causing error message on entry selection
[1.0.0] - 2022-10-25
Added
- Hoogle search (BREAKING CHANGE: Depends on
plenary.nvim
) - Hoogle search for signature under cursor (telescope-local, telescope-web or browser)
- Automatic registration of selection range capabilities if nvim-lsp-selection-range is loaded.
[0.2.0] - 2022-10-18
Added
- Basic automatic codeLens refresh (can be disabled by setting
tools.codeLens.autoRefresh = false
).
Fixed
- Clean exit of language server on quit.
[0.1.0] - 2022-10-15
Added
- Basic haskell-language-server client support on par with
nvim-lspconfig.hls
. - Clean shutdown on exit to prevent file corruption (see ghc #14533).