godotengine / godot-proposals

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

Command with remappable input to Force full project code parse refresh #10009

Open hsandt opened 3 months ago

hsandt commented 3 months ago

Describe the project you are working on

An action game

Describe the problem or limitation you are having in your project

I have numerous spurious Parser errors in my big project, mostly, whenever I add a new variable or enum, it is not recognized by the parser (although it works at runtime). Unfortunately I was unable to repro on a brand new, small project, so I couldn't open issues for them (maybe I could, if you allow me not to upload a MWE at all).

The only way to fix those parser errors is to restart Godot completely.

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

At least, until the core issue is fixed, having a button to simulate only the part of reboot that rescans the whole code, a kind of "Force refresh code parsing" button, would allow me to avoid wasting time closing and reopening the editor each time.

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

It could be a command under the code editor File menu, or a dedicated button near Online Docs and Search Help. What matters is that it's a command with a remappable shortcut so I can Force reparse in one keyboard shortcut.

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

No.

I tried to delete the .godot folder while Godot is open, it just breaks parsing completely (classes not recognized at all) and I must restart the editor anyway.

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

Parsing is a core feature.

AThousandShips commented 3 months ago

I think this was suggested before, can't find it right now

But I think this is a bit of a situation where the proposed feature shouldn't be needed and we should have a system that "just works" instead of depending on explicitly forcing reloading or reparsing