Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Lua Intellisense by Nickelony · Pull Request #1187 · TombEngine/Tomb-Editor · GitHub
Skip to content

Lua Intellisense - #1187

Open
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense
Open

Lua Intellisense#1187
Nickelony wants to merge 64 commits into
developfrom
Nickelony/Lua-Intellisense

Conversation

@Nickelony

@NickelonyNickelony commented Apr 11, 2026

Copy link
Copy Markdown
Collaborator

This pull request introduces significant improvements to Lua intellisense support, refactors and extends configuration path management, and makes various usability and reliability enhancements throughout the codebase. The most notable changes are the integration of a new Lua intellisense provider, the addition of a document manager for intellisense, updates to configuration directory structure, and improved error handling and user experience in the scripting studio.

Lua Intellisense Integration and Infrastructure:

  • Added a new ILuaIntellisenseProvider integration in the LuaStudio class, including event hooks for diagnostics and semantic token updates, and implemented navigation to definitions and live diagnostics in editors. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.cs, TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4][5][6]
  • Introduced LuaIntellisenseDocumentManager to manage document states, diagnostics, and semantic tokens for Lua files, supporting synchronization and versioning for language server communication. (TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.cs)

Configuration and Path Management Enhancements:

  • Improved fallback logic for the default program directory to use AppContext.BaseDirectory if the assembly location is unavailable. (GlobalPaths.cs)
  • Refactored and expanded configuration paths: added TextEditorThemesDirectory and renamed LuaColorConfigsDirectory to LuaThemeConfigsDirectory for clearer separation of themes and color schemes. (GlobalPaths.cs)

Usability and Error Handling Improvements:

  • Enhanced error handling in script generation by logging exceptions for better debugging. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs)
  • Ensured language files are opened with the correct editor type and improved logic for applying user settings and diagnostics when switching tabs or updating settings. (TombIDE/TombIDE.ScriptingStudio/LuaStudio.cs) [1][2][3][4]

Documentation Updates:

  • Updated ExternalResources.md to acknowledge the use of Codicons icon geometry from the VSCode Codicons project under the MIT license. (ExternalResources.md)

@NickelonyNickelony self-assigned this Apr 11, 2026
@NickelonyNickelony added enhancement A task which adds something new or improves on existing features. new feature This is a new feature task. work in progress The Pull Request is not finished yet or needs some extra work done to it. labels Apr 11, 2026
@Nickelony
Nickelony requested a review from CopilotApril 11, 2026 15:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces groundwork for Lua intellisense support (via Lua language server) and modernizes editor diagnostics/tooltips/rendering to support richer hover/diagnostic UX across scripting editors.

Changes:

  • Migrates multiple projects from a local AvalonEdit DLL reference to a NuGet AvalonEdit package reference (and adds MdXaml where needed).
  • Replaces legacy line-based error storage with a shared TextEditorDiagnostic model + severity, updates renderers/tooltips to use diagnostics and adds markdown tooltip rendering.
  • Adds Lua language server integration (completion, hover, signature help, diagnostics, and go-to-definition via F12/CTRL+Click) plus UI command + localization plumbing.

Reviewed changes

Copilot reviewed 49 out of 50 changed files in this pull request and generated 3 comments.

Show a summary per file
FileDescription
TombLib/TombLib.Test/TombLib.Test.csprojSwitches AvalonEdit dependency to NuGet package for test project.
TombLib/TombLib.Scripting/Workers/ErrorDetectionWorker.csSimplifies worker argument passing and returns typed diagnostics.
TombLib/TombLib.Scripting/TombLib.Scripting.csprojMoves AvalonEdit to NuGet and adds MdXaml dependency.
TombLib/TombLib.Scripting/Rendering/TextRendering.csRemoves legacy bitmap-based zig-zag underline rendering helper.
TombLib/TombLib.Scripting/Rendering/MarkdownToolTipRenderer.csAdds markdown-to-WPF tooltip rendering with code block handling + highlighting.
TombLib/TombLib.Scripting/Rendering/ErrorRenderer.csUpdates underlining to render by diagnostics severity (wavy for errors, straight for others).
TombLib/TombLib.Scripting/Rendering/BookmarkRenderer.csRenders bookmark highlights using new bookmark collection logic.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnosticSeverity.csIntroduces diagnostic severity enum + label helper.
TombLib/TombLib.Scripting/Objects/TextEditorDiagnostic.csIntroduces diagnostic model with offsets and range helpers.
TombLib/TombLib.Scripting/Interfaces/IErrorDetector.csChanges error detector API to return IReadOnlyList<TextEditorDiagnostic>.
TombLib/TombLib.Scripting/Bases/TextEditorBase.csAdds diagnostic storage/tooltips (incl. markdown), popup-based hover UI, and anchor-based bookmark tracking.
TombLib/TombLib.Scripting.Tomb1Main/Utils/ErrorDetector.csPorts TR1 error detection to emit TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.Tomb1Main/TombLib.Scripting.Tomb1Main.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Tomb1Main/Tomb1MainEditor.csUses diagnostics + markdown hover tooltips in editor integration.
TombLib/TombLib.Scripting.Tomb1Main/Services/Implementations/GameflowHoverService.csFormats hover output as markdown inline code for improved tooltip rendering.
TombLib/TombLib.Scripting.Lua/TombLib.Scripting.Lua.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.Lua/Services/ILuaIntellisenseProvider.csAdds intellisense provider abstraction for Lua LSP features + diagnostics.
TombLib/TombLib.Scripting.Lua/Objects/LuaSignatureInfo.csAdds signature help DTOs (signature + parameters).
TombLib/TombLib.Scripting.Lua/Objects/LuaHoverInfo.csAdds hover DTO with markdown/plaintext flag.
TombLib/TombLib.Scripting.Lua/Objects/LuaDefinitionLocation.csAdds definition location DTO for navigation.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionItem.csAdds completion item DTO.
TombLib/TombLib.Scripting.Lua/Objects/LuaCompletionData.csBridges completion DTOs into AvalonEdit ICompletionData.
TombLib/TombLib.Scripting.Lua/LuaEditor.SignatureHelp.csAdds signature help popup UI rendering for Lua editor.
TombLib/TombLib.Scripting.Lua/LuaEditor.Navigation.csAdds go-to-definition via F12 and CTRL+Click navigation request flow.
TombLib/TombLib.Scripting.Lua/LuaEditor.Intellisense.csAdds completion/hover/signature help plumbing + transient tooltip dismissal logic.
TombLib/TombLib.Scripting.Lua/LuaEditor.csMakes LuaEditor partial, wires intellisense + enables live diagnostics underlining.
TombLib/TombLib.Scripting.GameFlowScript/TombLib.Scripting.GameFlowScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/Utils/ErrorDetector.csPorts classic script error detection to TextEditorDiagnostic with offsets.
TombLib/TombLib.Scripting.ClassicScript/TombLib.Scripting.ClassicScript.csprojSwitches AvalonEdit dependency to NuGet package.
TombLib/TombLib.Scripting.ClassicScript/ClassicScriptEditor.csUpdates editor to apply diagnostics and suppress definition hovers when diagnostics present.
TombIDE/TombIDE.Shared/Resources/Localization/PL/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/EN/TombIDE.xmlAdds localized label for “Go to Definition”.
TombIDE/TombIDE.Shared/Resources/Localization/Localization.csAdds GoToDefinition localization property.
TombIDE/TombIDE.Shared/IDEConfiguration.csAdds persisted config value for Lua language server path.
TombIDE/TombIDE.ScriptingStudio/UI/UIKeys.csAdds F12 shortcut mapping for “Go to Definition”.
TombIDE/TombIDE.ScriptingStudio/UI/UICommand.csAdds GoToDefinition command enum value.
TombIDE/TombIDE.ScriptingStudio/UI/DocumentModePresets/ContextMenus/Lua.xmlAdds context menu item for go-to-definition in Lua editor.
TombIDE/TombIDE.ScriptingStudio/TombIDE.ScriptingStudio.csprojSwitches AvalonEdit dependency to NuGet package.
TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.csEnables and labels autocomplete setting checkbox.
TombIDE/TombIDE.ScriptingStudio/Settings/ClassicScriptSettingsControl.csUpdates settings preview to clear diagnostics instead of legacy errors.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerSettingsFactory.csCreates Lua LS settings payload (runtime/workspace/completion/telemetry).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerResponseParser.csParses LSP responses for completion/hover/definition/signature help.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerPathHelper.csNormalizes paths and URIs for file-based LSP communication.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerLocator.csResolves LS executable from config/PATH/VS Code extensions and persists discovered path.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerIntellisenseProvider.csImplements ILuaIntellisenseProvider atop the LSP client with document sync + diagnostics publishing.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerDiagnosticsParser.csConverts published LSP diagnostics into TextEditorDiagnostic offsets/messages.
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaLanguageServerClient.csImplements JSON-RPC/LSP process client (start/init, request/notify, read loop, config handling).
TombIDE/TombIDE.ScriptingStudio/Services/LuaIntellisense/LuaIntellisenseDocumentManager.csTracks document open/change state and associates diagnostics with versions.
TombIDE/TombIDE.ScriptingStudio/LuaStudio.Intellisense.csWires Lua studio tabs to LS provider (sync documents, apply diagnostics, handle definition navigation).
TombIDE/TombIDE.ScriptingStudio/LuaStudio.csInitializes/disposes Lua intellisense and routes GoToDefinition command to the active Lua editor.
Files not reviewed (1)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting/Rendering/BookmarkRenderer.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 65 out of 67 changed files in this pull request and generated 2 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 67 out of 69 changed files in this pull request and generated 3 comments.

Files not reviewed (2)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.Scripting/Bases/TextEditorBase.cs Outdated
Comment threadTombLib/TombLib.Scripting.UI/Rendering/ErrorRenderer.cs Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 102 out of 105 changed files in this pull request and generated 3 comments.

Files not reviewed (3)
  • TombIDE/TombIDE.ScriptingStudio/Settings/LuaSettingsControl.Designer.cs: Language not supported
  • TombLib/TombLib.Forms/Forms/FormAbout.designer.cs: Language not supported
  • TombLib/TombLib.Scripting.Lua/LuaTextBox.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.WPF/BrushHelpers.cs
Comment threadTombLib/TombLib.Scripting.Lua/Resources/LuaThemeRepository.cs Outdated
@LwmteLwmte modified the milestones: Version 2.0, Version 2.1Jul 19, 2026
@Nickelony

Copy link
Copy Markdown
CollaboratorAuthor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The main thing that we need to preserve are the TR3X additions in the conflicting files. Can you please fix those conflicts?

CopilotAI commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request. Some files have moved or have been removed, while some logic has been rewritten or has moved to other places in the codebase. The ma...

Resolved the merge conflicts with develop, preserving TR3X support across the refactored scripting architecture.

Conflict resolutions:

  • Kept the new IScriptingStudioShell mount path in FormMain (instead of the old per-studio constructors)
  • Kept the TIDE\**\* glob in TombIDE.Shared.csproj (covers TR3X templates automatically)
  • Kept the HEAD installer layout and added TR3X uninstall entries
  • Kept HEAD WadTool.csproj structure and added UseWPF from develop
  • Removed obsolete EditorTabControl / EditorTypeHelper (replaced by the new document controller stack)
  • Moved develop’s updated TRX gameflow.schema.json into TombLib.Scripting.TRX (Tomb1Main path removed)
  • Applied develop’s FOV clamp flyby tests under Tests/TombEditor.Tests/...

TR3X ported into refactored locations:

  • ScriptingWorkspaceProfileSelector now maps TR3X to the TRX workspace profile
  • TR3X also wired through SideBar update enablement, import/setup script path handling, GameProjectIdentifier, and PathHelper fallbacks

Commit: see latest on Nickelony/Lua-Intellisense.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancementA task which adds something new or improves on existing features.new featureThis is a new feature task.ready for reviewThe Pull Request is finished and ready for review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@Nickelony@Lwmte