haskell / haskell/haskell-language-server

[plugin][refine-import] add configuration allowing refining into `Internal` namespace

Open
#2,521 0 comments 0 reactions 0 assignees View on GitHub
component: imports plugin type: enhancement
Dominant language
Haskell
Stars
3k
Forks
455
Avg merge
3d 21h
Merged PRs (30d)
13

Description

**Feature request**

Currently, the plugin requires people to manually refine imports if user wants to depend on `Internal` uncontrolled API.

https://github.com/haskell/haskell-language-server/pull/1832#discussion_r632777557

**Solution**

It should not be too hard to add the option into the plugin:
An example of `Properties` in type lenses plugin:
https://github.com/haskell/haskell-language-server/blob/7d7cfa24c0d8efa2188ac1753cbf9cd74a310672/ghcide/src/Development/IDE/Plugin/TypeLenses.hs#L89-L112

**Alternatives solution**

The current design can be seen as a good design, as it encourages best practices & discourages the use of uncontrolled `Internal` API: http://nikita-volkov.github.io/internal-convention-is-a-mistake.

But, still, people may have strong reasons & requirements to be able to refine into `Internal` modules when they need.

Contributor guide

No contributing guide indexed for this repository

Research direction

Inspect the refine-import plugin and compare its configuration with the Properties example in ghcide/src/Development/IDE/Plugin/TypeLenses.hs at lines 89-112. Determine how the option should permit refinement into Internal modules, then locate or add coverage for the configuration; done means users can enable this behavior without manually refining imports.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.