@@ -11,8 +11,8 @@ import Control.Lens hiding (List)
11
11
import Control.Monad (join )
12
12
import Control.Monad.IO.Class
13
13
import qualified Data.HashMap.Strict as H
14
- import Data.List.Extra (findIndex , nubOrdOn )
15
- import Data.Maybe (catMaybes , fromMaybe , listToMaybe )
14
+ import Data.List.Extra (nubOrdOn )
15
+ import Data.Maybe (catMaybes , listToMaybe )
16
16
import qualified Data.Text as T
17
17
import Development.IDE as D
18
18
import Development.IDE.GHC.Compat
@@ -44,10 +44,9 @@ codeActionProvider :: PluginMethodHandler IdeState TextDocumentCodeAction
44
44
codeActionProvider state _plId (CodeActionParams _ _ docId _ (J. CodeActionContext (J. List diags) _monly)) = do
45
45
let mFile = docId ^. J. uri & uriToFilePath <&> toNormalizedFilePath'
46
46
uri = docId ^. J. uri
47
- content <- fmap VFS. virtualFileText <$> LSP. getVirtualFile (toNormalizedUri uri)
48
47
pm <- liftIO $ fmap join $ runAction " Pragmas.GetParsedModule" state $ getParsedModule `traverse` mFile
49
48
let dflags = ms_hspp_opts . pm_mod_summary <$> pm
50
- insertRange = maybe (Range (Position 0 0 ) (Position 0 0 )) ( ` endOfModuleHeader` content) pm
49
+ insertRange = maybe (Range (Position 0 0 ) (Position 0 0 )) endOfModuleHeader pm
51
50
pedits = nubOrdOn snd . concat $ suggest dflags <$> diags
52
51
return $ Right $ List $ pragmaEditToAction uri insertRange <$> pedits
53
52
@@ -179,16 +178,12 @@ completion _ide _ complParams = do
179
178
180
179
-- | Find the first non-blank line before the first of (module name / imports / declarations).
181
180
-- Useful for inserting pragmas.
182
- endOfModuleHeader :: ParsedModule -> Maybe T. Text -> Range
183
- endOfModuleHeader pm contents =
181
+ endOfModuleHeader :: ParsedModule -> Range
182
+ endOfModuleHeader pm =
184
183
let mod = unLoc $ pm_parsed_source pm
185
184
modNameLoc = getLoc <$> hsmodName mod
186
185
firstImportLoc = getLoc <$> listToMaybe (hsmodImports mod )
187
186
firstDeclLoc = getLoc <$> listToMaybe (hsmodDecls mod )
188
- line =
189
- fromMaybe 0 $
190
- firstNonBlankBefore . _line . _start =<< srcSpanToRange
191
- =<< modNameLoc <|> firstImportLoc <|> firstDeclLoc
192
- firstNonBlankBefore n = (n - ) . fromMaybe 0 . findIndex (not . T. null ) . reverse . take n . T. lines <$> contents
187
+ line = maybe 0 (_line . _start) (modNameLoc <|> firstImportLoc <|> firstDeclLoc >>= srcSpanToRange)
193
188
loc = Position line 0
194
189
in Range loc loc
0 commit comments