V1.0.0 implementation#1
Merged
Merged
Conversation
Captures the locked decisions from brainstorming: Newtonsoft.Json, explicit "type" discriminator, debounced+atomic+shutdown-flush save policy, backup-on-corrupt recovery, and UI state persisted in state.json. Defines public surface, schema, save/load mechanics, threading model, testing strategy, and explicit scope cut-offs.
… test second catch
…ocs, volatile _disposed, +2 tests
…t, themed menu border, stale comment
…return type to BOOL
…sproj Adds DllExport 1.7.4 and UnmanagedExports 1.2.7 to packages.config. Wires net.r_eg.DllExport.targets into the csproj with three config properties: DllExportMetaLibFullPath -> RGiesecke.DllExport.Metadata.dll (attribute type source) DllExportNamespace/DllExportMetaLibAttr -> resolves to RGiesecke.DllExport.DllExportAttribute DllExportOurILAsm=true -> uses bundled CoreCLR ilasm/ildasm (no VS C++ workload needed) Import is conditioned on MSBuildRuntimeType==Full so dotnet test (SDK MSBuild) is unaffected.
…ualTabGroups
Replaces the comment "called by the C++/CLI bridge" with direct unmanaged exports via
3F.DllExport IL post-processing. All six entry points get [DllExport("name", Cdecl)]:
isUnicode, setInfo, getName, getFuncsArray, beNotified, messageProc
Key ABI correctness measures:
isUnicode: [return: MarshalAs(UnmanagedType.Bool)] for 4-byte Windows BOOL
getName: returns a stable HGlobal wchar_t* pointer (not a transient marshaled string)
getFuncsArray: accepts IntPtr (int*) and writes count via Marshal.WriteInt32
AssemblyName is reverted from VirtualTabGroups.Managed to VirtualTabGroups so the
output DLL is VirtualTabGroups.dll, which Notepad++ expects as the entry-point file.
…nter
The Notepad++ SDK defines FuncItem._pShKey as a ShortcutKey* pointer (8 bytes on
x64), not an embedded ShortcutKey value (4 bytes). Using an embedded struct caused
the struct layout to be 4 bytes short, corrupting every field that Notepad++ reads
after _init2Check.
Changes:
FuncItem._pShKey: ShortcutKey -> IntPtr
PluginMain.AllocShortcutKey(): new helper that heap-allocates a ShortcutKey via
Marshal.AllocHGlobal and returns its pointer, or IntPtr.Zero for no-shortcut keys
BuildFuncItems: replaced 'new ShortcutKey(...)' with AllocShortcutKey(...)
The C++/CLI bridge project has been deleted (files git rm'd in the prior commit).
Remove the Project(...) block and all ProjectConfigurationPlatforms entries for
GUID {1E250491-29E1-43A9-83F6-FA4B3367298B} from VirtualTabGroups.sln.
The solution now contains only VirtualTabGroups (C#) and VirtualTabGroups.Tests.
… packaging The C++/CLI bridge and its DLL are gone. Each architecture zip now ships two DLLs only: VirtualTabGroups.dll (plugin entry-point with unmanaged exports) and Newtonsoft.Json.dll. The validate.yml needed no changes.
…nstead of crashing host
…isolate StringBuilder marshaler issue
… NPPM_GETFULLPATHFROMBUFFERID
… the default text bounds
…node + ItemDrag breadcrumb
…stale entries on Load
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.