generated from krampus/template-godot4
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			993 B
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			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])
 |