godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.08k stars 69 forks source link

Make Find in Files functional on built-in scripts #9436

Open perroboc opened 3 months ago

perroboc commented 3 months ago

Describe the project you are working on

Multiple learning experiments

Describe the problem or limitation you are having in your project

Replacing a function's or variable's name in all my godot scripts is easy enough with "Replace in files" feature, but this doesn't work with built-in scripts, limiting the speed of the development...

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Allow for the Find in files and Replace in files features to also search within built-in scripts.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

image

If this enhancement will not be used often, can it be worked around with a few lines of script?

It can be done outside godot to a certain degree... with the risk of editing tscn files

Is there a reason why this should be core and not an add-on in the asset library?

Code editor improvements

Calinou commented 3 months ago

Built-in scripts are stored in scene files, which can be text or binary.

Searching directly in those files isn't technically feasible for binary scenes, and for text scenes, it could lead to unrelated parts showing up in search results. Using Replace in Files could even corrupt your scene if you replace parts of the scene that weren't meant to be replaced (e.g. property names, or the file structure itself).

This will need a bespoke implementation that loads built-in scripts from scene files and returns them as search results. Implementing Replace in Files functionality in this might be too difficult to do, so maybe it should be left read-only.

KoBeWi commented 3 months ago

Add tscn to editor/script/search_in_file_extensions project setting. It has the same limitations as external editors though, https://github.com/godotengine/godot/pull/75607 will resolve that.