Commit graph

376 commits

Author SHA1 Message Date
PucklaMotzer09
d2e651f403 Add Duplicate Lines shortcut to CodeTextEditor
This keyboard shortcut has been made with inspiration from the VS Code keyboard shortcut editor.action.copyLinesDownAction. It duplicates all selected lines and inserts them below no matter where the caret is within the line.
2023-09-25 23:41:31 +02:00
jsjtxietian
12299e0f53 Ignore empty lines when commenting/uncommenting code 2023-09-20 18:55:48 +08:00
Yuri Sizov
3c63dce3cd Merge pull request #80573 from KoBeWi/2k_lines_of_changes_created_at_2AM
Add EditorStringNames singleton
2023-09-06 14:49:02 +02:00
kobewi
6de34fde27 Add EditorStringNames singleton 2023-09-03 19:58:18 +02:00
Yuri Rubinsky
35802374ac Add coloring for completion of vector components 2023-08-30 21:13:25 +03:00
Yuri Sizov
04e550acb6 Merge pull request #79358 from timothyqiu/indentation
Make indentation indicators translatable
2023-07-31 21:01:13 +02:00
Yuri Sizov
d13369eee1 Merge pull request #68140 from quinnyo/auto-complete-option
Add editor setting to toggle automatic code completion
2023-07-12 17:15:51 +02:00
Yuri Sizov
1e1d2a89bf Merge pull request #44557 from iwek7/improved_comment_toggle
Improve `CodeEdit`'s toggle comments behavior
2023-07-12 17:14:52 +02:00
Yuri Sizov
ecc9134086 Merge pull request #79079 from stmSi/ESC-key-not-closing-FindReplaceBar
Fix ESC (ui_cancel) not closing FindReplaceBar
2023-07-12 15:09:46 +02:00
Haoyu Qiu
a552103531 Make indentation indicators translatable 2023-07-12 09:19:24 +08:00
stmSi
7eb517c27f Fix: ESC (ui_cancel) not closing FindReplaceBar 2023-07-06 03:35:01 +06:30
Haoyu Qiu
ac454ce2a7 Translate "No match" message in FindReplaceBar 2023-07-02 16:49:22 +08:00
quinnyo
68c24f9993 Add code_complete_enabled code editor setting 2023-06-21 02:51:05 +10:00
bruvzg
75e6ec8874
[TextEdit] Expose all auto-wrap modes. 2023-06-13 10:28:27 +03:00
Rémi Verschelde
577ab3c565
Merge pull request #75746 from ajreckof/order_autocomplete
Sort code autocompletion with rules
2023-06-08 18:14:31 +02:00
kobewi
09d5884b0d Enable bookmarks gutter 2023-06-02 22:40:29 +02:00
iwek
b0df2e1552 Update comment toggle behavior in CodeEdit 2023-06-01 19:11:57 +02:00
Rémi Verschelde
6dcd490d03
Merge pull request #66763 from MewPurPur/remove-bookmark-hiding
Remove editor setting for hiding bookmarks
2023-05-29 10:28:37 +02:00
ajreckof
006e899bb3 sort code completions with rules
Fixups

Add levenshtein distance for comparisons, remove kind sort order, try to improve as many different use cases as possible

Trying again to improve code completion

Sort code autocompletion options by similarity based on input

To make it really brief, uses a combination `String.similiary`, the category system introduced in a previous PR, and some filtering to yield more predictable results, instead of scattering every completion option at seemingly random.

It also gives much higher priority to strings that contain the base in full, closer to the beginning or are perfect matches.

Also moves CodeCompletionOptionCompare to code_edit.cpp

Co-Authored-By: Micky <66727710+Mickeon@users.noreply.github.com>
Co-Authored-By: Eric M <41730826+EricEzaM@users.noreply.github.com>
2023-05-23 05:12:34 +02:00
Arman Elgudzhyan
8ab2cf3d2d Use defined key mapping for closing popups and dialogs
As opposed to hardcoding the escape key. Also removed such hardcoding in a few other places as well as a hardcoded enter key in one of the affected input fields.
2023-05-20 17:39:59 -07:00
Paulb23
0b3fba45c6 Move convert_indent into CodeEdit 2023-05-07 13:08:37 +01:00
Clay John
610877e326
Merge pull request #72288 from MewPurPur/use-string-repeat
Use `String.repeat()` to optimize several String methods
2023-05-05 09:56:48 -07:00
VolTer
6b84e258d2 Use String.repeat() in more places 2023-05-01 02:27:46 +02:00
Rindbee
23d6225c1e Fix line_spacing in code editor will not take effect immediately on change
Previously, in CodeTextEditor, `line_spacing` was forgotten to update
when the editor setting property changed.
2023-04-24 17:11:38 +08:00
VolTer
f587a21899 Code style improvements to text_edit and related 2023-04-08 19:33:56 +02:00
Yuri Sizov
aeb4489e63
Merge pull request #75070 from jmb462/74802
Fix commenting collapsed function issue
2023-04-03 15:38:18 +02:00
Ron B. Yeh
1e9fd10f68 Fix off-by-one issue where Go to Line dialog shows the incorrect line
number (one less than the actual current line).
2023-03-30 23:39:44 -07:00
Jean-Michel Bernard
68ad3338ef Fix commenting collapsed function issue 2023-03-25 18:43:16 +01:00
aXu-AP
d188068caa Fix toggle comment not moving caret
Fix regression if caret is at the beginning of the line and comment is toggled.
2023-02-16 16:17:24 +02:00
aXu-AP
bdfb10fb98 Rework code editor multiline operations
Fix bugs if 2 selections were on same line.
Fix bugs when selection ended at new line.
Make carets stay in place after operation and on undo.

Affects: delete lines, move lines, toggle comments, bookmarks and breakpoints.
2023-02-12 20:53:49 +02:00
Rémi Verschelde
b342dcdf04
Remove some unused signals
Part of #37604.
2023-01-31 18:54:04 +01:00
Paulb23
8cb05a5e53 Fixed removing secondary carets when editing with search open 2023-01-28 16:08:10 +00:00
bruvzg
5361ec9f43
Implement BiDi override mode for GDScript source. 2023-01-18 19:22:20 +02:00
Paulb23
b9f24f1586 Remove secondary carets when using FindReplaceBar 2023-01-14 15:58:56 +00:00
Rémi Verschelde
d95794ec8a
One Copyright Update to rule them all
As many open source projects have started doing it, we're removing the
current year from the copyright notice, so that we don't need to bump
it every year.

It seems like only the first year of publication is technically
relevant for copyright notices, and even that seems to be something
that many companies stopped listing altogether (in a version controlled
codebase, the commits are a much better source of date of publication
than a hardcoded copyright statement).

We also now list Godot Engine contributors first as we're collectively
the current maintainers of the project, and we clarify that the
"exclusive" copyright of the co-founders covers the timespan before
opensourcing (their further contributions are included as part of Godot
Engine contributors).

Also fixed "cf." Frenchism - it's meant as "refer to / see".
2023-01-05 13:25:55 +01:00
Alfred Reinold Baudisch
02f7e03a66 Cancels the code complete timer when the caret moves to another line
Fixes and closes #68961
2022-12-06 12:45:25 +01:00
Rémi Verschelde
4bca815d41
Merge pull request #69132 from RumblingTurtle/multiline-move-fix
Script editor: Rewrite multiline move logic
2022-12-05 11:32:29 +01:00
Eduard Zalyaev
c3eec67f06 Script editor: Rewrite multiline move logic. Preserving all carets and their selections intact on alt+up/down shortcut
Fixes  #68731.
2022-12-05 10:43:27 +03:00
Rémi Verschelde
d4c4a44607
Merge pull request #68759 from MewPurPur/bookmark-fix
Fix text selection persisting on bookmark traversal
2022-11-28 08:06:05 +01:00
Aaron Franke
f6714858bf
Rename TextureButton set_*_texture methods to set_texture_* 2022-11-19 17:33:40 -06:00
VolTer
135c8cbf98 Fix text selection persisting on bookmark traversal 2022-11-17 02:50:04 +01:00
Christian Cuevas
5347c2b10e Fix "Search" match inconsistencies
- Offset by searched length not line text
- Continue searching line for whole word matches on mismatch: Breaking at this point makes it so that upon any whole word mismatch all potential matches after this point inline are skipped, to avoid this unwanted behavior we continue searching the line positioned after the mismatch.
2022-11-16 14:02:16 -08:00
Hugo Locurcio
11842eb738
Disable code font ligatures by default in the editor 2022-11-12 22:38:04 +01:00
VolTer
e0e236edfc Remove editor setting for hiding bookmarks 2022-11-02 01:14:02 +01:00
kobewi
e48c5daddf Unify usage of GLOBAL/EDITOR_GET 2022-10-18 19:01:48 +02:00
Rindbee
ff0de4e220 Fix some bugs about search in code editor
1. Fix #61713;
2. Fix the bug when there are consecutive matches, forward searching will skip the adjacent item;
3. Fix the bug that enable the selection-only option will affect the operations in search mode.
2022-10-11 18:15:32 +08:00
bruvzg
0103af1ddd
Fix MSVC warnings, rename shadowed variables, fix uninitialized values, change warnings=all to use /W4. 2022-10-07 11:32:33 +03:00
Rémi Verschelde
f5903215d0 Merge pull request #61902 from Paulb23/multi-caret
Add Multi-caret support to TextEdit
2022-10-06 08:56:34 +02:00
Paulb23
0cbe176ce6 Add multi caret support to Editor 2022-10-05 17:19:26 +01:00
kobewi
14435ebcee Split script navigation state and edit state 2022-09-25 23:06:39 +02:00
bruvzg
6f4d233062
Fix key mapping changes when moving from macOS to other platform
Removes separate `Command` key (use `Meta` instead).
Adds an event flag to automatically remap `Command` <-> `Control` (cannot be set alongside `Control` or `Meta`).
2022-09-07 18:45:35 +02:00
Micky
6dbd283ae5 Rename every instance of caret_blink_speed to caret_blink_interval
It's been changed in EditorSettings, LineEdit, TextEdit.

Affects setters and getters, and passed parameters, too.
2022-09-06 18:37:17 +02:00
Micky
e31bb5ffeb Rename CanvasItem.update() to queue_redraw()
Affects a lot of classes. Very thoroughly checked signal connections and deferred calls to this method, add_do_method/add_undo_method calls, and so on.

Also renames the internal `_update_callback()` to `_redraw_callback()` for consistency.

Just a few comments have also been changed to say "redraw".

In CPUParticles2D, there was a private variable with the same name. It has been renamed to `do_redraw`.
2022-08-29 14:59:47 +02:00
Rémi Verschelde
fd6453c45e Revert "Remove NOTIFICATION_ENTER_TREE when paired with NOTIFICATION_THEME_CHANGED"
This reverts commit 4b817a565c.

Fixes #64988.
Fixes #64997.

This caused several regressions (#64988, #64997,
https://github.com/godotengine/godot/issues/64997#issuecomment-1229970605)
which point at a flaw in the current logic:

- `Control::NOTIFICATION_ENTER_TREE` triggers a *deferred* notification with
  `NOTIFCATION_THEME_CHANGED` as introduced in #62845.
- Some classes use their `THEME_CHANGED` to cache theme items in
  member variables (e.g. `style_normal`, etc.), and use those member
  variables in `ENTER_TREE`, `READY`, `DRAW`, etc. Since the `THEME_CHANGE`
  notification is now deferred, they end up accessing invalid state and this
  can lead to not applying theme properly (e.g. for EditorHelp) or crashing
  (e.g. for EditorLog or CodeEdit).

So we need to go back to the drawing board and see if `THEME_CHANGED` can be
called earlier so that the previous logic still works?

Or can we refactor all engine code to make sure that:
- `ENTER_TREE` and similar do not depend on theme properties cached in member
  variables.
- Or `THEME_CHANGE` does trigger a general UI update to make sure that any
  bad theme handling in `ENTER_TREE` and co. gets fixed when `THEME_CHANGE`
  does arrive for the first time. But that means having a temporary invalid
  (and possibly still crashing) state, and doing some computations twice
  which might be heavy (e.g. `EditorHelp::_update_doc()`).
2022-08-29 11:11:29 +02:00
Rémi Verschelde
f7f8af232c
Merge pull request #64885 from Mickeon/rename-tooltip-hint
Rename `hint_tooltip` to `tooltip_text` & setter getter
2022-08-28 17:43:01 +02:00
Aaron Record
4b817a565c Remove NOTIFICATION_ENTER_TREE when paired with NOTIFICATION_THEME_CHANGED 2022-08-27 11:52:29 -06:00
Micky
ef5b9a06a9 Rename hint_tooltip to tooltip_text & setget
`hint_tooltip` -> `tooltip_text`
`set_tooltip` -> `set_tooltip_text`
`_get_tooltip` -> `get_tooltip_text`

Updates documentation, too.
2022-08-27 01:35:01 +02:00
kobewi
8be27dc59e Replace Array return types with TypedArray 2022-08-22 22:42:36 +02:00
Hugo Locurcio
ccf088b40b
Allow using numpad for zoom shortcuts in the 2D/code editors
This behavior is consistent with GIMP.
2022-08-10 15:07:47 +02:00
Stanislav Labzyuk
44ce838192 Fix guidelines appearance 2022-08-02 12:38:23 +07:00
bruvzg
f743c6a368
Fix script editor zoom shortcuts not marking events as accepted. 2022-07-25 14:21:56 +03:00
Yuri Roubinsky
7b94603baa Adding shader preprocessor support
Co-authored-by: TheOrangeDay <6472143+TheOrangeDay@users.noreply.github.com>
2022-07-22 22:51:57 +02:00
Andreas Raddau
48b8bfbbcf Fix negative search result match 2022-07-12 15:14:43 +02:00
bruvzg
8f6c4956ca
Fix regressions from Font refactor
Remove unnecessary font override
Fixes button outline draw when it should not, causing button colors to be slightly off
2022-07-08 08:27:18 +03:00
bruvzg
a319e6e623
Fix regressions from Font refactor
Fixes `p_font.is_null()` errors due to incorrect resource type used.
Fixes code editor font not set correctly, and OpenType features applied to the wrong font.
2022-07-07 15:11:08 +03:00
bruvzg
344ba0ffaf
Refactor Font configuration and import UI, and Font resources. 2022-07-06 14:12:36 +03:00
ConteZero
5d56efcaa4 Add an option to drag'n'drop selected text in TextEdit 2022-06-26 15:22:02 +02:00
Rémi Verschelde
c273ddc3ee Style: Partially apply clang-tidy's cppcoreguidelines-pro-type-member-init
Didn't commit all the changes where it wants to initialize a struct
with `{}`. Should be reviewed in a separate PR.

Option `IgnoreArrays` enabled for now to be conservative, can be
disabled to see if it proposes more useful changes.

Also fixed manually a handful of other missing initializations / moved
some from constructors.
2022-05-02 16:28:25 +02:00
Oğuzhan Eroğlu
77a78cb4ad Indicate code editor search match number 2022-04-27 15:21:28 +03:00
reduz
360dea5348 Add GDExtension support to Script
* Ability to create script languages from GDExtension
* Some additions to gdnative_extension.h to make this happen
* Moved the GDExtension binder to core

This now allows creating scripting languages from GDExtension, with the same ease as if it was a module. It replaces the old PluginScript from Godot 3.x.
Warning: GodotCPP will need to be updated to support this (it may be a bit of work as ScriptInstance needs to be created over there again).
2022-03-27 16:13:00 +02:00
Aaron Franke
918b09cabc
Initialize bools in the headers in editor 2022-03-12 13:34:06 -06:00
jmb462
dcd2a92af3 Port existing _notification code to use switch statements (part 1/3) 2022-02-16 11:38:24 +01:00
Rémi Verschelde
11572c6e30
Editor: Cleanup some includes dependencies
Removes some unnecessary includes from `editor_node.h`, and instead add
those where they're used.

Removes unnecessary `editor_node.h` includes in various editor classes.

Renames `dynamicfont` to `dynamic_font` in a couple files.

Misc cleanup while jumping through that rabbit hole.
2022-02-15 14:54:15 +01:00
Hendrik Brucker
b396fd4eef Improve compilation speed (forward declarations/includes cleanup) 2022-02-12 02:46:22 +01:00
Rémi Verschelde
fc076ece3d
Revert "Add missing SNAME macro optimization to all theme methods call"
This reverts commit a988fad9a0.

As discussed in #57725 and clarified in #57788, `SNAME` is not meant to be used
everywhere but only in critical code paths. For theme methods specifically, it
was by design that only getters use `SNAME` and not setters.
2022-02-08 10:17:25 +01:00
jmb462
a988fad9a0 Add missing SNAME macro optimization to all theme methods call 2022-02-06 23:06:11 +01:00
jmb462
1ce81dc5f2 Add missing SNAME macro optimization in some function calls 2022-02-06 15:54:04 +01:00
Gilles Roudière
73e784de1e Remove get_focus_owner() from Control, replaced by get_viewport()->gui_get_focus_owner() 2022-02-03 11:59:32 +01:00
Yuri Roubinsky
050f746e19 Fix theming update of shader editor 2022-01-25 12:10:07 +03:00
kobewi
1422c756ed Rename request_code_completion signal 2022-01-22 14:04:35 +01:00
Yuri Roubinsky
eb95cdd690 Prevent error emitting when clicking on error in code text editor 2022-01-05 08:55:33 +03:00
Rémi Verschelde
fe52458154
Update copyright statements to 2022
Happy new year to the wonderful Godot community!
2022-01-03 21:27:34 +01:00
Nathan Franke
49403cbfa0
Replace String comparisons with "", String() to is_empty()
Also:
- Adds two stress tests to test_string.h
- Changes to .empty() on std::strings
2021-12-09 04:48:38 -06:00
Rémi Verschelde
31ded7e126
Fixup last commit, change misleading CodeEditor for consistency 2021-12-09 11:40:46 +01:00
Nathan Franke
41a20171eb
align to horizontal_alignment, valign to vertical_alignment, related 2021-12-09 01:38:46 -06:00
kobewi
841a9ef820 ScrollContainer's scrollbar visibility is now enum 2021-12-07 18:27:12 +01:00
ator-dev
3237950216 Make delete_lines work correctly regardless of the selection 2021-11-26 08:28:58 +00:00
Aaron Franke
3c0fdcc8ac
Use "enum class" for input enums 2021-11-12 15:37:54 -06:00
ConteZero
fbee4efa5f Add option to make selection unique 2021-10-27 19:45:52 +02:00
Gordon MacPherson
1881b3adc5
Improve GDScript Editor and Improve latency
Improvements:
- GDScript Highlighter is faster by 25% as keys are smaller (hashes instead of strings)
- Removes message queue from _apply_settings_change to allow resize to work correctly
- Some performance fixes are pending still

Note: this resolves the code editor behaving badly when resizing in debug builds
2021-09-21 13:56:47 +02:00
Rémi Verschelde
949c268a68
Merge pull request #52655 from Chaosus/toggle_scripts_panel 2021-09-17 13:54:54 +02:00
Yuri Roubinsky
1dda47c280 Added status bar and toggle scripts panel button to EditorHelp/VScripts 2021-09-15 11:35:03 +03:00
Hugo Locurcio
1e8976fcb5
Tweak the script editor's line/column indicator for readability
- Use a colon instead of parentheses and a comma to reduce visual
  clutter.
- Pad the line number with 4 spaces to account for scripts longer
  than 999 lines.
2021-09-14 22:23:59 +02:00
Yuri Roubinsky
7ccbf49bda Prevent error generates if Delete Line used on last line in CodeEditor 2021-09-14 17:18:20 +03:00
Rémi Verschelde
ce8dbef6a0
Merge pull request #52662 from Chaosus/fix_bookmarks
Fix editor crash on pressing `Go to Previous Bookmark` menu button
2021-09-14 14:13:00 +02:00
Yuri Roubinsky
6a9e855af9 Fix editor crash on pressing Go to Previous Bookmark menu button 2021-09-14 14:21:51 +03:00
ThreeRhinosInAnElephantCostume
a442b06313 Fix Find Next shortcut not working when search bar is focused 2021-09-02 09:54:26 +02:00
reduz
5cecdfa8af Entirely removes BIND_VMETHOD in favor of GDVIRTUAL
* `_gui_input`, `_input`, `_unhandled_input` and `_unhandled_key_input` are now regular C++ virutal functions.
* Everything else converted to GDVIRTUAL
* BIND_VMETHOD is gone, always use the new syntax from now on.

Creating `_gui_input` method and using the binder to register events will no longer work, simply override the virtual function now.
2021-08-23 08:10:13 -03:00
jmb462
838f0d49e3 Fix carret not following while debugging (Fix #51754) 2021-08-16 23:12:46 +02:00
Paulb23
bcfc591f86 Reorganise text editor settings 2021-08-16 17:18:49 +01:00