hls-qualify-imported-names-plugin: A Haskell Language Server plugin that qualifies imported names

[ apache, development, library ] [ Propose Tags ] [ Report a vulnerability ]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 1.0.1.0, 1.0.2.0, 2.0.0.0, 2.0.0.1, 2.1.0.0, 2.2.0.0, 2.3.0.0, 2.4.0.0, 2.5.0.0, 2.6.0.0
Dependencies aeson, base (>=4.12 && <5), containers, deepseq, dlist, ghc, ghcide (==2.6.0.0), hls-graph, hls-plugin-api (==2.6.0.0), lens, lsp, text, transformers, unordered-containers [details]
License Apache-2.0
Author Jonathan Shen
Maintainer shenjonathan0@gmail.com
Category Development
Source repo head: git clone https://github.com/haskell/haskell-language-server.git
Uploaded by hls_team at 2024-01-15T16:13:06Z
Distributions Arch:1.0.2.0
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 2927 total (58 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-01-15 [all 1 reports]

Readme for hls-qualify-imported-names-plugin-2.6.0.0

[back to package description]

Qualify Imported Names

Qualify Imported Names Demo

Summary

Rewrite imported names to be qualified.

Motivation

You've imported a number of modules, and have written a lot of code with unqualified names. You want to import a new module but you know there will be a number name clashes so you want to switch your current usage of names to be qualified.

It would be nice if you could change

import Blah

to

import Blah as Bloo

then magically qualify all the previous names imported from Blah with Bloo. After doing that you could then change

import Blah as Bloo

to

import qualified Blah as Bloo

and import your the new module using names from it without worry.

Well, now you can...

Usage

  1. Put cursor over the import declaration you want to qualify names from.
  2. Initiate a Code Action.
  3. Select Qualify imported names.

Features

  • Names are qualified on a per-import declaration basis.
  • Names are qualified by the imported module's alias if it has one, otherwise by the imported module's name.
  • If the import declaration has an explicit import list then the plugin will qualify only names on the list.
  • If the import declaration has an explicit hiding list then the plugin will qualify names from the imported module that are not on the list.

Future possibilities

  • It may be possible to use the LSP rename functionality to ask for a name so that we don't have to do the as Alias dance.

Change log

1.0.0.1

  • GHC 9.2.1 compatibility

1.0.0.0

  • Released...