2222import org .eclipse .lsp4j .DocumentLinkParams ;
2323import org .eclipse .lsp4j .Location ;
2424import org .eclipse .lsp4j .LocationLink ;
25+ import org .eclipse .lsp4j .TextDocumentContentChangeEvent ;
26+ import org .eclipse .lsp4j .TextDocumentItem ;
27+ import org .eclipse .lsp4j .VersionedTextDocumentIdentifier ;
2528import org .eclipse .lsp4j .jsonrpc .messages .Either ;
2629import org .eclipse .lsp4j .services .LanguageClient ;
2730import org .eclipse .lsp4j .services .TextDocumentService ;
@@ -41,7 +44,7 @@ public class BibtexTextDocumentService implements TextDocumentService {
4144 private final Map <String , String > contentCache ;
4245 private LanguageClient client ;
4346
44- public BibtexTextDocumentService (RemoteMessageHandler messageHandler , @ NonNull LspClientHandler clientHandler , @ NonNull LspDiagnosticHandler diagnosticHandler , @ NonNull LspLinkHandler linkHandler ) {
47+ public BibtexTextDocumentService (@ NonNull RemoteMessageHandler messageHandler , @ NonNull LspClientHandler clientHandler , @ NonNull LspDiagnosticHandler diagnosticHandler , @ NonNull LspLinkHandler linkHandler ) {
4548 this .clientHandler = clientHandler ;
4649 this .diagnosticHandler = diagnosticHandler ;
4750 this .linkHandler = linkHandler ;
@@ -56,23 +59,28 @@ public void setClient(LanguageClient client) {
5659
5760 @ Override
5861 public void didOpen (DidOpenTextDocumentParams params ) {
59- LOGGER .debug ("didOpen {}" , params .getTextDocument ().getUri ());
60- fileUriToLanguageId .putIfAbsent (params .getTextDocument ().getUri (), params .getTextDocument ().getLanguageId ());
61- if ("bibtex" .equals (params .getTextDocument ().getLanguageId ())) {
62- diagnosticHandler .computeAndPublishDiagnostics (client , params .getTextDocument ().getUri (), params .getTextDocument ().getText (), params .getTextDocument ().getVersion ());
62+ TextDocumentItem textDocument = params .getTextDocument ();
63+ LOGGER .debug ("didOpen {}" , textDocument .getUri ());
64+ fileUriToLanguageId .putIfAbsent (textDocument .getUri (), textDocument .getLanguageId ());
65+
66+ if ("bibtex" .equals (textDocument .getLanguageId ())) {
67+ diagnosticHandler .computeAndPublishDiagnostics (client , textDocument .getUri (), textDocument .getText (), textDocument .getVersion ());
6368 } else {
64- contentCache .put (params . getTextDocument (). getUri (), params . getTextDocument () .getText ());
69+ contentCache .put (textDocument . getUri (), textDocument .getText ());
6570 }
6671 }
6772
6873 @ Override
6974 public void didChange (DidChangeTextDocumentParams params ) {
70- LOGGER .debug ("didChange {}" , params .getTextDocument ().getUri ());
71- String languageId = fileUriToLanguageId .get (params .getTextDocument ().getUri ());
75+ VersionedTextDocumentIdentifier textDocument = params .getTextDocument ();
76+ TextDocumentContentChangeEvent contentChange = params .getContentChanges ().getFirst ();
77+ LOGGER .debug ("didChange {}" , textDocument .getUri ());
78+ String languageId = fileUriToLanguageId .get (textDocument .getUri ());
79+
7280 if ("bibtex" .equalsIgnoreCase (languageId )) {
73- diagnosticHandler .computeAndPublishDiagnostics (client , params . getTextDocument (). getUri (), params . getContentChanges (). getFirst (). getText (), params . getTextDocument () .getVersion ());
81+ diagnosticHandler .computeAndPublishDiagnostics (client , textDocument . getUri (), contentChange . getText (), textDocument .getVersion ());
7482 } else {
75- contentCache .put (params . getTextDocument (). getUri (), params . getContentChanges (). getFirst () .getText ());
83+ contentCache .put (textDocument . getUri (), contentChange .getText ());
7684 }
7785 }
7886
0 commit comments