Fixes#10276.
Adding new files to a v2.0 project was unsupported. This requires a
little bit of a logic change to the two new File New dialogs:
1. The New File Details dialog does not allow changing from the
SourcePath of the project.
2. The New File dialog does allow changing to any path. If you select a
path outside the project path, it will open in a new window.
Fixes#10315.
When filling from layout, if the .kvks file did not exist, an obscure
error was generated:
Error: 2908 Error encountered parsing eo_plus.kvks: TypeError: Cannot read properties of null (reading 'byteLength')
Fixed this by checking for file existence before attempting to process,
which then reports a more understandable error of 'file not found'.
Then, needed to tweak the caller in Keyman Developer IDE to remove the
reference to the .kvks file before attempting to build
(chicken-and-egg).
- when a required section is missing, only throw an internal error IF we haven't already flagged a problem. for example, if 'vars' fails to compile because of a problem, and we already have an error on file, then don't throw an internal error that 'bksp' depends on uninitialized 'vars'.
- mimic this flow in the test helpers.
- add a test case for this in the test helpers, in test-tran
- add a strictError flag to say that no additional errs are allowed.
Fixes: #10291
- add keys on each row and add rows, mapping to a new reserved "gap (reserved)" key.
- add a mechanism for reserved keys, in case we have others…
For #9451
Fixes#10161.
Includes transition of existing options from registry to options.json,
and once options.json exists, will always read from that and ignore
registry. Was able to eliminate some of the legacy datatype usage for
several options. Reader/writer includes naive file lock retry to avoid
contention, which I am hopeful will be sufficient for our needs, given
the low chance of contention.
First part of addressing #10161 is to refactor the existing usage of the
registry values into the common KeymanDeveloperOptions unit. This was
mostly straightforward except for the changes to KeymanSentryClient,
which happens to be the most important part of this particular fix.
Relates to #9473.
Now that each compiler has a common interface, we can consolidate the
common code into BuildActivity. This makes it very easy to see where the
compiler calls have special cases, such as the model_info and
keyboard_info compilers (these are primarily for internal use, so the
special case work should not be a problem).
`outFile` is not a compiler option, and so it should not be a part of
the `CompilerBaseOptions` interface. This formally separates the
command-line options from the compiler options, which eliminates a
number of restrictive structures.
Relates to #9473.
Refactors the public API of ModelInfoCompiler to meet KeymanCompiler,
including moving file write responsibilities into the class itself.
`sources` has become a property of `options`, which is perhaps a slight
violation of the intent of the `init()` function being a one-time call,
as it means we'll need to instantiate an new class for each file we
compile. Given the use-case for the model_info compiler is almost
exclusively internal, I think this is acceptable. Tell me if you think
otherwise!