Make LaTeX linting optional

This commit is contained in:
Patrick Förster 2019-03-07 20:30:40 +01:00
parent d4b9b97360
commit 029dcff511
3 changed files with 21 additions and 2 deletions

View file

@ -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<BuildConfig>("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<LatexLinterConfig>("latex.lint", uri)
if (config.onSave) {
latexDiagnosticsProvider.update(uri, text)
} else {
latexDiagnosticsProvider.clear(uri)
}
}
private suspend fun <T, R> runFeature(provider: FeatureProvider<T, R>,
document: TextDocumentIdentifier,
params: T): R {

View file

@ -20,4 +20,8 @@ class LatexDiagnosticsProvider : FeatureProvider<Unit, List<Diagnostic>> {
suspend fun update(uri: URI, text: String) {
diagnosticsByUri[uri] = LatexLinter.lint(text)
}
fun clear(uri: URI) {
diagnosticsByUri.remove(uri)
}
}

View file

@ -0,0 +1,5 @@
package texlab.diagnostics
import com.google.gson.annotations.SerializedName
data class LatexLinterConfig(@SerializedName("onSave") val onSave: Boolean)