godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.16k stars 97 forks source link

Make breakpoints/bookmarks global, move to bottom tab and provide a disable option #6073

Open chucklepie opened 1 year ago

chucklepie commented 1 year ago

Describe the project you are working on

2D

Describe the problem or limitation you are having in your project

Currently, in my opinion, the bookmarks and breakpoints facility is pretty redundant and unusable because of two things:

  1. They are local to each file
  2. It's clunky to move around them

Basically, when you work with bookmarks/breakpoints you want them for your project as a whole not for each individual file. When you want to go to breakpoint 'X' you have to first open the file that has the breakpoint. Given most files are small in Godot this defeats the purpose, not to mention you need to know where the file is in the first place then open it.

The option 'remove all breakpoints', etc. also doesn't really work as you would expect because they are only removed per file, so there is no 'remove all breakpoints' in reality.

In addition because of this there is no means of easily stopping breakpoints from running.

Apologies if this already exists, I did try searching and I thought there were discussions to do this from what I recall last year but in trialling Godot 4 this still does not exist.

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

  1. Make breakpoints and bookmarks global, I cannot honestly think of a use-case where this current feature is useful
  2. Provide a 'disable' breakpoints so you can easily turn them on/off without deleting them

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

Make them part of the bottom pane so they are always there

image

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

no

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

This is basic functionality in most IDEs.

Zireael07 commented 1 year ago

Not sure about breakpoints, but would love it for bookmarks.

chucklepie commented 1 year ago

Imagine for a minute you're writing a pretty beefy application using eclipse, visual studio, etc. Maybe Godot engine itself.

Can you imagine not seeing any of your breakpoints or being able to navigate to them and instead you had to first open the file to then get the list just for that file? Or you wanted to run your code with breakpoints disabled temporarily but couldn't?

That's what per file breakpoints on Godot are currently.

On Mon, 9 Jan 2023, 6:49 pm Zireael07, @.***> wrote:

Not sure about breakpoints, but would love it for bookmarks.

— Reply to this email directly, view it on GitHub https://github.com/godotengine/godot-proposals/issues/6073#issuecomment-1376123448, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADCERRP2QCIWD5DCEN4UAW3WRRMVNANCNFSM6AAAAAATVXZHHY . You are receiving this because you authored the thread.Message ID: @.***>

SolunaSoftware commented 1 year ago

This would be a really nice improvement, making bookmarks much more useful.

Calinou commented 1 year ago

@SolunaSoftware Please don't bump issues without contributing significant new information. Use the :+1: reaction button on the first post instead.

paddy-exe commented 1 year ago

I would argue that for deleting all bookmarks/breakpoints across all files there should be an additional Verify Action Dialogue to be sure that you don't accidentally delete them

hsandt commented 9 months ago

It was not explicitly described in OP but it would also allow us to navigate to all bookmarks across different files using Go To Next Bookmark (Ctrl+B) and Go To Previous Bookmark (Ctrl+Shift+B).

For people who place many bookmarks on each file and really want to preserve the old behavior to cycle across bookmarks on the same file, we could simply keep alternative commands Go To Next/Previous Bookmark In Current File, and the user could always bind them to custom shortcuts.

About the OP's mockup, it seems like it's an unedited screenshot? Maybe an actual mockup of how the global bookmarks would be displayed would help devs start working on the feature. For example, it could be a list of bookmark names in the format [file_path]:[bookmark_line_content_preview]? The bookmarks could also be numbered to allow immediate jump to the first then bookmarks (as in some code editor plugins), although that feels like another feature to me.

If this takes too much comments here to discuss design, we can also open a Discussion thread for this.

Krigu commented 7 months ago

It was not explicitly described in OP but it would also allow us to navigate to all bookmarks across different files using Go To Next Bookmark (Ctrl+B) and Go To Previous Bookmark (Ctrl+Shift+B).

Other editors also have the concept of named bookmarks (Mnemonic in IntelliJ), where you can assign a specific number or letter to a bookmarkfor a specific file / line. After getting used to it I think it really improves the workflow of navigating between files.

But as a first step, i think it would be really helpful to be able to use bookmarks across different files.

Cr3ated commented 1 month ago

This solves one of my (and the people I work alongside's) main gripes with the Godot script editor.

Most .gd scripts, and game-dev related scripts in general, are smaller in size than those from something like say software-dev. Some generalization here, of course, but I theorize most people would greatly appreciate global bookmarks to easily jump between the coupled scripts they are actively working on.

I bookmark two points of interest, and CTRL + B to toggle between the two; infinitely more intuitive to me than searching through the (very long) script list, which I have to manually sort myself

To make the feature perform in both ways though - perhaps there should be a toggle somewhere in the bookmarks menu to exclude bookmarks outside of the opened file? That, to me, feels like a more sensible default rather than having seperate keybinds.

I have not discussed or bumped a feature proposal like this before, so I apologize if its the wrong way to go about it. Felt passionate enough about this one to actually write.