From 029dcff511e0de77e7bea7671bfd01e55855582f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20F=C3=B6rster?= Date: Thu, 7 Mar 2019 20:30:40 +0100 Subject: [PATCH] Make LaTeX linting optional --- src/main/kotlin/texlab/TextDocumentServiceImpl.kt | 14 ++++++++++++-- .../texlab/diagnostics/LatexDiagnosticsProvider.kt | 4 ++++ .../kotlin/texlab/diagnostics/LatexLinterConfig.kt | 5 +++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/texlab/diagnostics/LatexLinterConfig.kt diff --git a/src/main/kotlin/texlab/TextDocumentServiceImpl.kt b/src/main/kotlin/texlab/TextDocumentServiceImpl.kt index e0561279..e9af34cf 100644 --- a/src/main/kotlin/texlab/TextDocumentServiceImpl.kt +++ b/src/main/kotlin/texlab/TextDocumentServiceImpl.kt @@ -26,6 +26,7 @@ import texlab.definition.BibtexEntryDefinitionProvider import texlab.definition.LatexLabelDefinitionProvider import texlab.diagnostics.BibtexEntryDiagnosticsProvider import texlab.diagnostics.LatexDiagnosticsProvider +import texlab.diagnostics.LatexLinterConfig import texlab.diagnostics.ManualDiagnosticsProvider import texlab.folding.BibtexDeclarationFoldingProvider import texlab.folding.LatexEnvironmentFoldingProvider @@ -231,7 +232,7 @@ class TextDocumentServiceImpl(val workspaceActor: WorkspaceActor) : CustomTextDo workspaceActor.put { Document.create(uri, text, language) } launch { - latexDiagnosticsProvider.update(uri, text) + runLinter(uri, text) publishDiagnostics(uri) resolveIncludes() } @@ -260,7 +261,7 @@ class TextDocumentServiceImpl(val workspaceActor: WorkspaceActor) : CustomTextDo override fun didSave(params: DidSaveTextDocumentParams) { launch { val uri = URIHelper.parse(params.textDocument.uri) - latexDiagnosticsProvider.update(uri, params.text) + runLinter(uri, params.text) publishDiagnostics(uri) val config = client.configuration("latex.build", uri) @@ -436,6 +437,15 @@ class TextDocumentServiceImpl(val workspaceActor: WorkspaceActor) : CustomTextDo } } + private suspend fun runLinter(uri: URI, text: String) { + val config = client.configuration("latex.lint", uri) + if (config.onSave) { + latexDiagnosticsProvider.update(uri, text) + } else { + latexDiagnosticsProvider.clear(uri) + } + } + private suspend fun runFeature(provider: FeatureProvider, document: TextDocumentIdentifier, params: T): R { diff --git a/src/main/kotlin/texlab/diagnostics/LatexDiagnosticsProvider.kt b/src/main/kotlin/texlab/diagnostics/LatexDiagnosticsProvider.kt index ddc251cf..ca6709c7 100644 --- a/src/main/kotlin/texlab/diagnostics/LatexDiagnosticsProvider.kt +++ b/src/main/kotlin/texlab/diagnostics/LatexDiagnosticsProvider.kt @@ -20,4 +20,8 @@ class LatexDiagnosticsProvider : FeatureProvider> { suspend fun update(uri: URI, text: String) { diagnosticsByUri[uri] = LatexLinter.lint(text) } + + fun clear(uri: URI) { + diagnosticsByUri.remove(uri) + } } diff --git a/src/main/kotlin/texlab/diagnostics/LatexLinterConfig.kt b/src/main/kotlin/texlab/diagnostics/LatexLinterConfig.kt new file mode 100644 index 00000000..c246ffaa --- /dev/null +++ b/src/main/kotlin/texlab/diagnostics/LatexLinterConfig.kt @@ -0,0 +1,5 @@ +package texlab.diagnostics + +import com.google.gson.annotations.SerializedName + +data class LatexLinterConfig(@SerializedName("onSave") val onSave: Boolean)