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