If the error occurs before the prelude, the line and column numbers are unchanged.
If the error occurs after the prelude, the line number is offset by the difference between the length of the original and replacement preludes.
If the error occurred within the replacement prelude, the line and column numbers are adjusted to match the position of the error within the prelude file that was used as a replacement, and the error message indicates that the error occurred within the prelude.
These changes should make it easier to debug masterlist loading errors that are due to incorrect syntax.
This reverts commit da0e35bb2b.
The minimum version of libloadorder has been increased because 18.5.0
included some changes to support symlinked plugins, without which
symlink support is incomplete.
Using the latter doesn't really add any value, and while libloadorder still pulls in windows, it means less duplication due to version mismatches in the dependency tree.
Long paths can be greater than 260 characters long, but each path component is still limited to 255 characters. The latter is also commonly the component length limit on Linux.
Support for long paths requires Windows 10 1607 or later and a Registry value to be set[1], so to make the cause of test failures clearer when that isn't the case, there's one test that checks that Registry value is set, and long paths are not used in the other tests if it isn't set, so only that one test should failed if the system isn't configured as expected.
GitHub Action's Windows runners do have the Registry value set[2].
This doesn't set the manifest for the Rust tests because it seems to be very difficult to set a manifest for only the tests, and it's not worth the effort when the only tests that fail are those that try to create a symlink, especially since those cases are also covered by the C++ tests.
[1]: https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry#enable-long-paths-in-windows-10-version-1607-and-later
[2]: https://github.com/actions/runner-images/blob/releases/win22/20250921/images/windows/scripts/build/Configure-BaseImage.ps1#L73
Replace the boolean parameters for including user metadata and evaluating conditions with MergeMode and EvalMode enums.
The C++ and Python wrappers still use booleans because they're more constrained than enums in those languages, which can be given invalid values.