* parse allocations
* WaitForShakeQueue
* Measure user time and shake time in experiments
* clean ups
* Prevent a potential crash of the shake enqueue thread
* Fix a bug that was preventing reenqueud actions from getting flushed
* Avoid running the check-project action per file
What we really want is to check the project once per cradle
* Backwards compat.
* Review feedback
* Fix typo
Co-authored-by: Neil Mitchell <ndmitchell@gmail.com>
Co-authored-by: Neil Mitchell <ndmitchell@gmail.com>
* Preserve more information about targets
* Correctly model the special target
This should prevent infinite looping on cradles that do not provide targets,
such as the hie-bios implicit cradle (no longer used)
* Send a warning when using the implicit cradle
* Implicit cradle
Co-authored-by: Neil Mitchell <ndmitchell@gmail.com>
Co-authored-by: Neil Mitchell <ndmitchell@gmail.com>
* Use implicit-hie when no explicit hie.yaml
* Use implicit-hie-cradle master in all build config files
* Set correct hie-bios version for ghc-8.10.1
* Fix windows ci build
* Import paths are relative to cradle
I noticed ghcide HEAD was broken on the ghcide submodule of the hls repo.
* remove unused
* Fix comment placement
* Special case the implicit cradle
The implicit cradle comes without import paths, so we need to preserve the old
logic that synthetised them from the current module
* Hlint
* Fix timing issue: update known files before restarting the session
Also, DO NOT filter out missing targets
* Use --verbose when running tests
* Log test outputs on 3rd attempt
* Fall back to filtering known files
* hlint
* Upgrade KnownFiles to KnownTargets
* Use KnownTargets to filter modules, not module paths
* Fix test cradle
* Increase pauses in flaky test
* remove no longer needed check
* Disable ansi color codes in CI
* Disable flaky test
* Preserve import paths for implicit cradles
Implicit cradles do not list targets, see discussion in
https://github.com/haskell/ghcide/issues/765
* Really preserve import paths
* Refinement holes
* Set more GHC options and use indentation for parsing
* Add an option to customize the typed holes settings
Refinement hole fits are very cool, but currently too slow to enable at deeper
levels. It should eventually be user configurable.
* GHC Compatibility
* Compat. with 8.4
* tighten some return types
* Extract ShakeQueue from shakeSession
Instead of creating a new TQueue on every restart, we reuse the same TQueue
over and over.
The trickiest bit is to ensure that enqueued actions are always retried when
a Shake session is cancelled. The ActionQueue datatype is intended to manage
this complexity.
* Handle multiple user actions concurrently
* Fixes for .ghci
Unfortunately these are dependent on the ghc version
* redundant parens
* Formatting
* Attempt fix for completion tests
These tests are failing because ghcide is sending diagnostics interleaved with
completions now (which is good) and the tests cannot handle it
* remove debugging printout
* simplify
* Fix a test
* Fix flaky tests
This fixes the issue on Linux where the binary was statically linked and
Template Haskell (or the eval plugin on haskell-language-server) tried
to evaluate some code. It would previously fail to load ghc-prim because
it couldn't lookup symbols from libm which are usually dynamically
linked in.
* Add new command to GetModuleGraph for a session and propate changes to
modules
Only propagate changes to parent modules when saving
Typecheck files when they are opened, don't TC FOI
Add known files rule
Don't save ifaces for files with defered errors
Co-authored-by: Zubin Duggal <zubin@cmi.ac.in>
* Add configuration for parent typechecking
* hlint ignore
* Use targets to filter located imports (#10)
* Use targets to filter located imports
* Remove import paths from the GHC session
Otherwise GHC will prioritize source files found in the import path
* Update session-loader/Development/IDE/Session.hs
Co-authored-by: Pepe Iborra <pepeiborra@me.com>
* Add session-loader to hie.yaml (#714)
* move known files rule to RuleTypes
* Disable checkParents on open and close document (#12)
* Really disable expensive checkParents
* Add an option to check parents on close
Co-authored-by: Matthew Pickering <matthewtpickering@gmail.com>
Co-authored-by: Pepe Iborra <pepeiborra@me.com>
Co-authored-by: Luke Lau <luke_lau@icloud.com>
* Split out the session loading logic into a sublibrary
This way haskell-language-server can also reuse this logic.
Note that this sublibrary is public so it requires cabal-version: 3.0
Part of the work towards #478
* Move Development.IDE.Session into ghcide itself
Sublibraries do not seem to play well. Hide this behind the ghc-lib flag
so that the Haskell specific hie-bios stuff can be disabled
Note that we need to put the template-haskell part of this module into a
separate module because of an access exception when compiling with
Stack, GHC 8.10.1 and Windows.