- let changeEvents = map (\e -> TextDocumentContentChangeEvent (Just (e ^. range)) Nothing (e ^. newText)) edits
- params = DidChangeTextDocumentParams docId (List changeEvents)
- newVFS <- liftIO $ changeVFS oldVFS (fmClientDidChangeTextDocumentNotification params)
+ ctx <- lift $ lift Reader.ask
+
+ -- if its not open, open it
+ unless (uri `Map.member` oldVFS) $ do
+ let fp = fromJust $ uriToFilePath uri
+ contents <- liftIO $ T.readFile fp
+ let item = TextDocumentItem (filePathToUri fp) "" 0 contents
+ msg = NotificationMessage "2.0" TextDocumentDidOpen (DidOpenTextDocumentParams item)
+ liftIO $ B.hPut (serverIn ctx) $ addHeader (encode msg)
+
+ oldVFS <- vfs <$> lift State.get
+ newVFS <- liftIO $ openVFS oldVFS msg