
Hi everyone, here are the minutes of the meeting:
---
# Cabal meeting (17/08/2023)
Previously: https://hackmd.io/2EPSwwg8QqqZ96cFdW2wTQ
## Next Release
- Help needed with [#9088](https://github.com/haskell/cabal/pull/9088).
- Hécate: If we can't get it through, we'll skip it for this backport.
## Cabal exact-printing in HLS
* HLS has a cabal plugin:
https://discourse.haskell.org/t/hsoc-hls-cabal-file-support/7331/2
* Establishing a context for completions (Value Context, Keyword
Context, ...) is not easily possible
* Custom parsing that works 95% of the time is used.
* Fitting .cabal intermediate structures would improve the code and
reduce maintenance burden for HLS team.
* Often requested feature in HLS:
https://github.com/haskell/haskell-language-server/issues/3595
* Requires parsing and modifying .cabal files without modifying the
rest of the cabal file
* GenericPackageDescription insufficient due to loss of Source Positions
* Intermediate representations of .cabal files are unknown / hard to
discover
* Custom megaparsec parser used for POC of Code Action "Add module to
exposed-modules" field.
* FYI, this code action is working for a lot of use-cases already
* Explicit goal of being an exactprinter
* See [megaissue](
https://github.com/haskell/cabal/issues/7544#issuecomment-934009792) (and
there is a whole github project, linked to in the issue).
* While the HLS's custom parser serves a different purpose, it'd be much
nicer if we could re-use Cabal directly
* In a dicussion, @fendor and @andreabedini talked about a way forward:
* Let's make `[Field ann]` roundtripping by modifying the lexer
* Trailing whitespace needs to be handled
* Comments need to be handled
* Are braces currently handled in the lexer or are they a part of
`ann`?
* POC branch by @andreabedini available
* `Field ann` gives us enough information to implement the Code Action
for HLS
* Ideally, we also make `Fields ann` (note: different intermediate
representation) roundtrip with `[Field ann]`
Pros:
* We are relatively close to achieving roundtrips of `[Field ann] <->
.cabal`
* Immense help for tooling already
Cons:
* No field analysis, further parsing required.
Proposed roadmap:
1. HLS releases with the Code Action using a custom parser
2. The custom parser is replaced by `[Field ann]` internally, but still
permitting an interface HLS can use
3. Improve the lexer and enable roundtripping of `[Field ann] <-> .cabal
file`
4. Evaluate what Code Actions and IDE features can be implemented on top of
that
## Cabal nix integration
- [Users’ survey](
https://discourse.haskell.org/t/community-survey-removing-cabals-nix-integra...
).
- tl;dr: most people do not use it, with some exceptions (see message by
neil.mayhew).
- Some use *stack* nix integration, but I am not sure it is actually the
same thing as `cabal`.
(I am told it is by various `stack` users. *++bsa*)
*Action Item: We kill it.*
## Other topics
- GHC 9.8
Hécate: 3.10.2.0 release will also be shipped with GHC 9.8. It needs to be
patched in order to recognise it as a legal version.
On Sat, 12 Aug 2023 at 15:53, Theophile Hécate Choutri
Hi everyone, You'll find below the link to the agenda and minutes:
https://hackmd.io/78RP9BOAQFiq_GM1qNRpYQ?both
Please do take the time to add the topics you want to raise. We already have a discussion about the exact-print parser that is being developed for HLS, and this would be an appropriate moment to determine our current legacy in terms of parsers within the code base.
See you next week, Hécate