-
Notifications
You must be signed in to change notification settings - Fork 77
Add two more HLS project ideas #181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
--- | ||
title: Haskell Language Server: Cabal Plugin Continuation | ||
--- | ||
|
||
The [`hls-cabal-plugin`](https://github.com/haskell/haskell-language-server/tree/master/plugins/hls-cabal-plugin) is a Haskell Language Server (HLS) plugin that allows HLS to be a Language Server for `.cabal` files as well as Haskell files. | ||
While the plugin already provides many core features, there are more possible features that would increase the ergonomics of working with cabal files, such as: | ||
|
||
* Goto-Definition for local stanzas, such as library, executable or common stanzas | ||
* Integrating the [`cabal-add`](https://github.com/haskell/haskell-language-server/issues/3853) into HLS | ||
* Prompt to add unknown modules to `exposed-modules` and `other-modules` sections. | ||
* Completion of local and non-local package names | ||
* Completion of package version bounds | ||
* Showing documentation for keywords and enum values. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe also hovers for package names showing the package description etc? |
||
|
||
With some creativity, we can come up with many more features. | ||
|
||
**Mentorship** | ||
|
||
Fendor | ||
|
||
**Difficulty and size** | ||
|
||
The difficulty of this project is medium, as there are two rather big existing projects that developers need to understand in order to provide improvements. | ||
|
||
The estimated size of this project is 175 hours, but there is likely 350 hours worth of work depending on the mentee's interests and ideas. | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--- | ||
title: Haskell Language Server: Test suite Improvements | ||
--- | ||
|
||
Haskell Language Server (HLS) has an extensive test suite that is run on every commit. | ||
Over time, the test suite has degraded in performance, reliability and consistency. | ||
This has become a bottleneck in the development of HLS, as a slow and unreliable test suite deters new contributors and makes life more difficult for maintainers. | ||
|
||
This project aims to improve the quality of the test suite by: | ||
|
||
* Reducing the overall test suite execution time | ||
* Fixing flaky test cases | ||
* Removing artificial wait times in test cases | ||
* Unifying the style of tests in HLS | ||
|
||
The issue [#3736](https://github.com/haskell/haskell-language-server/issues/3736) provides some ideas on how to improve the test suite further. | ||
|
||
To achieve the aforementioned goals, some of the following intermediate steps could be helpful: | ||
|
||
* Unifying testing infrastructure of ghcide and plugins | ||
* Enabling parallelism of test case execution | ||
* Exploiting custom LSP messages to reduce flakiness of tests written in lsp-test | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe also "Modifying lsp-test to make it easier to use reliably"? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This project idea avoids proposing modifying lsp-test itself, as it may require a bigger redesign. I feel like, we can get in a lot of low-hanging fruits without modifying lsp-test itself. |
||
|
||
**Mentorship** | ||
|
||
Fendor | ||
|
||
**Difficulty and size** | ||
|
||
The project itself is not too difficult, as there is lots of prior work and many low hanging fruits. | ||
However, there is a fair amount of working with the internals of Haskell Language Server which can be intimidating as they tend to be underdocumented. | ||
|
||
The size of this project ranges from 175 hours up to 350 hours, depending on the exact scope of the proposal. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could also potentially do something like this for non-local packages by linking to Hackage? I think the
textDocument/documentLink
request might work for that.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I have even more ideas, but I figured, it might be fun to let the mentee come up with their own nice features and ideas.