gdlint-plugin/addons/gdlint_plugin/run_linter.gd

34 lines
993 B
GDScript

@tool
class_name GDLintPlugin extends EditorPlugin
# If you've installed gdlint in a venv, you may want to overwrite this
const GDLINT: String = "gdlint"
func _enter_tree() -> void:
assert(not OS.execute(GDLINT, ["-h"]), "Could not find gdLint binary at {0}".format([GDLINT]))
resource_saved.connect(on_save)
func _exit_tree() -> void:
resource_saved.disconnect(on_save)
func on_save(resource: Resource) -> void:
# Run linting when a script resource is saved
if resource is Script:
var script: Script = resource
var filepath: String = ProjectSettings.globalize_path(resource.resource_path)
var script_editor = EditorInterface.get_script_editor()
var code_editor: CodeEdit = (
script_editor.get_current_editor().get_base_editor()
if script_editor.get_current_script() == script
else null
)
var gdlint_output: Array[String] = []
var error: int = OS.execute(GDLINT, [filepath], gdlint_output, true)
if error:
push_warning("gdLint:\n" + gdlint_output[0])