Suggested by @Nnyny. Give more detail on the semantic version format for
keyboard version, as well as details on the limitations to semver
imposed by the Keyman toolchain.
In compiler messages, for a long time we have inconsistently used
'command' instead of 'statement' when referring to kmn statements. The
kmn language documentation uses 'statement' fairly consistently.
If `nul` is used in the output part of a rule, then text or
text-emitting statements cannot also be included in the output of that
rule. This was not enforced in earlier versions of Keyman.
Adds a unit test for the enhanced validation.
Fixes: #13455
Relates-to: keymanapp/keyboards#3379
This is a major dependency version bump (4.5.0 to 5.0.9) which we would
normally avoid during beta. However, we need the fix
NaturalIntelligence/fast-xml-parser#725 for hex escapes in XML, which is
incorporated in 5.0.9.
I have assessed the other changes to fast-xml-parser and found no
breaking changes for us, but I tightened the types in xml-utils
declarations and found some minor inconsistencies which appear to have
no impact, and which I have corrected:
* wrong type in unused parameter to `tagValueProcessor`
* reference to unused property `options.emptyTag`
While doing this, I consolidated the common options for the parser in
order to verify consistency, but made no changes to the resolved
parsing/building options.
Added a test to ldml keyboard reading, to verify that numeric strings
are treated as strings, given the divergence in the `numberParseOptions`
option, and it shows that numeric strings are treated as strings.
Fixes: #13348
fast-xml-reader has a bug with numeric entities. See:
https://github.com/NaturalIntelligence/fast-xml-parser/issues/725
This commit adds a unit test to verify that non-BMP numeric entities
will be parsed correctly. It will fail until we update the
fast-xml-parser dependency.
Relates-to: #13348
kmc-ldml no longer meets the 90% coverage threshold with recent changes
in 19.0-alpha. With the fix from #13418, this now causes the build to
fail. Coverage should be increased with additional tests in kmc-ldml,
but this is a stopgap to allow builds to continue to pass.
Markers are permitted in key outputs, but when these are used to
generate a .kvk, they should be stripped out.
Also added a test for disp to verify that markers are not transformed in
`<display display=` attribute values.
Fixes: #13469
When launching a new instance of TIKE to open a source file that does
not have an owning project, use '-' as a placeholder for the project
filename, because passing an empty string as a parameter does not work.
Fixes: #13317
With the move to the richedit control, hotkeys such as Ctrl+V are
natively managed and we no longer need to handle them separately, as
this caused actions to be applied twice.
Fixes: #13335
For the project lock files, instead of using a filename in the same path
as the project file, with a .lock extension, use a hash of the project
filename in the Keyman Developer appdata folder, to avoid confusion and
conflict in project folders.
Fixes: #11584
There is a race condition where two processes may both attempt to open
the same project file. This appears to happen, for example, if an author
double-clicks on a single-click shortcut, launching Keyman Developer
twice in quick succession.
This fix adds a .lock file which is deleted automatically on close of
the project or on normal or abnormal process termination. If a second
process encounters the .lock file, it will simply open the welcome view
instead of attempting to open the project.
Fixes: #11584
Fixes: KEYMAN-DEVELOPER-1PR
Previously, we used U+FFFC as a marker in the debugger (for deadkeys and
LDML keyboard markers), which displayed as the letters OBJ in a small
dotted square. However, we switched the underlying component to
RichEdit, in order to better support rendering of many scripts (EDIT has
some problems). The RichEdit control silently converts U+FFFC to U+0020.
I switched to U+0001 as this is handled better, but has an unfortunate
missing-glyph marker.
In the future, it would be better to use a non-character marker
(leveraging RichEdit), but this is a much more complex change, and this
fix at least matches previous functionality.
Fixes: #13293