From 10226f3dc563ebbdc88737f8337107f9db811cc8 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:16:47 +1000 Subject: [PATCH] current caret position on tab change --- .../DependencyInjection.cs | 2 ++ .../Editor/EditorCaretPositionService.cs | 9 ++++++ .../BottomBar/EditorLineCharDisplay.cs | 28 +++++++++++++++++++ .../BottomBar/EditorLineCharDisplay.cs.uid | 1 + .../BottomBar/EditorLineCharDisplay.tscn | 5 +++- .../Features/CodeEditor/SharpIdeCodeEdit.cs | 11 ++++++++ 6 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 src/SharpIDE.Application/Features/Editor/EditorCaretPositionService.cs create mode 100644 src/SharpIDE.Godot/Features/BottomBar/EditorLineCharDisplay.cs create mode 100644 src/SharpIDE.Godot/Features/BottomBar/EditorLineCharDisplay.cs.uid diff --git a/src/SharpIDE.Application/DependencyInjection.cs b/src/SharpIDE.Application/DependencyInjection.cs index e1d1e6e..5c6ee65 100644 --- a/src/SharpIDE.Application/DependencyInjection.cs +++ b/src/SharpIDE.Application/DependencyInjection.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using SharpIDE.Application.Features.Analysis; using SharpIDE.Application.Features.Build; +using SharpIDE.Application.Features.Editor; using SharpIDE.Application.Features.Evaluation; using SharpIDE.Application.Features.FilePersistence; using SharpIDE.Application.Features.FileWatching; @@ -35,6 +36,7 @@ public static class DependencyInjection services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddLogging(); return services; } diff --git a/src/SharpIDE.Application/Features/Editor/EditorCaretPositionService.cs b/src/SharpIDE.Application/Features/Editor/EditorCaretPositionService.cs new file mode 100644 index 0000000..07f3ba2 --- /dev/null +++ b/src/SharpIDE.Application/Features/Editor/EditorCaretPositionService.cs @@ -0,0 +1,9 @@ +namespace SharpIDE.Application.Features.Editor; + +/// +/// Used by code editor windows to report the current caret position for display elsewhere in the UI +/// +public class EditorCaretPositionService +{ + public (int, int) CaretPosition { get; set; } = (1, 1); +} diff --git a/src/SharpIDE.Godot/Features/BottomBar/EditorLineCharDisplay.cs b/src/SharpIDE.Godot/Features/BottomBar/EditorLineCharDisplay.cs new file mode 100644 index 0000000..cc8a536 --- /dev/null +++ b/src/SharpIDE.Godot/Features/BottomBar/EditorLineCharDisplay.cs @@ -0,0 +1,28 @@ +using Godot; +using SharpIDE.Application.Features.Editor; + +namespace SharpIDE.Godot.Features.BottomBar; + +public partial class EditorLineCharDisplay : HBoxContainer +{ + private Label _label = null!; + [Inject] private readonly EditorCaretPositionService _editorCaretPositionService = null!; + + private (int, int) _currentPositionRendered = (1, 1); + + public override void _Ready() + { + _label = GetNode