Commit graph

4256 commits

Author SHA1 Message Date
Marc Durdin
1e4719c823
Merge pull request #13479 from keymanapp/fix/developer/13469-strip-markers-in-kvk-generation
fix(developer): strip markers when generating KVK from LDML
2025-03-13 13:19:37 +07:00
Marc Durdin
7cf86c548f
Merge pull request #13462 from keymanapp/fix/developer/13317-open-unprojected-source-file-in-temp-project
fix(developer): use '-' as placeholder for temp project name in cmdline
2025-03-12 08:55:41 +07:00
Marc Durdin
1f1b6e2b2a
Merge pull request #13459 from keymanapp/fix/developer/13420-load-options-before-use
fix(developer): load Keyman Developer options in Server before use
2025-03-12 08:55:13 +07:00
Marc Durdin
3ad7e78c25
Merge pull request #13457 from keymanapp/fix/developer/13446-improve-message-about-missing-file
fix(developer): add folder text to Error_FileDoesNotExist message
2025-03-12 08:55:02 +07:00
Marc Durdin
09636ac072
Merge pull request #13414 from keymanapp/docs/developer/kmc-patch-readme
docs(developer): fix typos in readme and add link
2025-03-12 08:54:46 +07:00
Marc Durdin
7645627f21 fix(developer): strip markers when generating KVK from LDML
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
2025-03-12 08:06:34 +07:00
Marc Durdin
15bea6fd21 fix(developer): use '-' as placeholder for temp project name in cmdline
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
2025-03-10 08:31:04 +07:00
Marc Durdin
d2b457b2e4 fix(developer): load Keyman Developer options in Server before use
Fixes: #13420
2025-03-10 06:28:39 +07:00
Marc Durdin
13d5ee8741 fix(developer): add folder text to Error_FileDoesNotExist message
Fixes: #13446
2025-03-10 05:19:09 +07:00
Marc Durdin
37cb3767ac chore(developer): lower threshold for kmc-model-info coverage, work around TeamCity reporter bug 2025-03-05 01:00:03 +03:00
Marc Durdin
060189a1ab chore(developer): drop coverage threshold for developer-utils to 45% 2025-03-05 00:24:41 +03:00
Steven R. Loomis
0ba005a55b feat(developer): line number symbols
- improve and simplify lookup algorithm
- add test for override filename on imports

Fixes: #10622
2025-03-04 09:34:47 -06:00
Marc Durdin
1b26d4ff96 docs(developer): fix typos in readme and add link 2025-03-04 13:59:41 +01:00
Marc Durdin
03001bd971 chore(common): add unit test for nul and context() in context part of rule
The compiler and Core appear to be working correctly in this situation;
this test verifies Core's behaviour.

Fixes: #13299
2025-03-04 11:22:35 +01:00
Steven R. Loomis
2dca879aae
Merge branch 'master' into feat/developer/10622-xml-parse-line-numbers-epic-ldml 2025-03-03 17:15:48 -08:00
Steven R. Loomis
92e16b90a0 feat(developer): line number symbols
- move file read bottleneck out of compiler.ts into the LDML XML reader
- move the eventresolver into the LDML XML reader
- add XML_FILENAME_SYMBOL - for tagging when an object is from a different file than the default
(such as with an import)

Fixes: #10622
2025-03-03 19:12:34 -06:00
Steven R. Loomis
b015221814 feat(developer): line number symbols
- change special symbol to XML_START_INDEX_SYMBOL
- use an array of line lengths rather than an array of strings for the file info
- add an EventResolver interface to the callbacks, such that it has an opportunity to resolve events

Fixes: #10622
2025-03-03 17:08:40 -06:00
Steven R. Loomis
1febf9a0de
Update developer/src/common/web/utils/src/xml-utils.ts
Co-authored-by: Marc Durdin <marc@durdin.net>
2025-03-03 13:18:02 -06:00
Steven R. Loomis
d7cb7b63a3 feat(developer): add an EventResolver
- it's a hook to the hook to allow the LDML compiler to resolve error message line numbers
- TODO still not extra performant, but maybe the right separation of concerns

Fixes: #10622
2025-03-03 13:14:41 -06:00
Steven R. Loomis
3e73a3f081 feat(developer): add CompilerEvent.offset
- per review, keep this as a separate field.

Fixes: #10622
2025-03-03 12:36:42 -06:00
Marc Durdin
f61a104acf
Merge branch 'master' into chore/merge-beta-into-master-B18S2 2025-03-01 15:45:19 +07:00
Steven R. Loomis
4d9ea2db2d feat(developer): work around line number symbols
- add KeymanXMLReader.removeSymbols() and call it from tests

Fixes: #10622
2025-02-28 14:24:12 -06:00
Steven R. Loomis
819d9bf562 feat(developer): API for resolving line numbers for messages
- change to use a different fast-xml-parser PR, https://github.com/NaturalIntelligence/fast-xml-parser/pull/729

Fixes: #10622
2025-02-28 12:08:31 -06:00
Steven R. Loomis
650042fb6e feat(developer): API for resolving line numbers for messages
- simplify the error call site again

Fixes: #10622
2025-02-28 10:53:21 -06:00
Marc Durdin
accd5e268c
Merge pull request #13326 from keymanapp/fix/developer/13306-13307-include-nul-in-context-offset-kmw-v10
fix(developer): include `nul` in offset calculations for kmw v10 compiler
2025-02-28 23:37:00 +07:00
Marc Durdin
213bbd7d31
Merge pull request #13311 from keymanapp/chore/core/13303-unit-tests-for-nul-index-context
chore(core): add unit tests to validate `nul` with `index` and `context`
2025-02-28 23:36:40 +07:00
Marc Durdin
d6c2657bb0
Merge pull request #13308 from keymanapp/fix/developer/13301-13302-contextex-offset-check
fix(developer): verify `context(n)` offsets are valid in kmcmplib
2025-02-28 23:36:30 +07:00
Marc Durdin
a62735ea4b
Merge pull request #13324 from keymanapp/feat/developer/sensible-initial-dir-for-package-add-file
feat(developer): use .kps folder as initial dir for Add Files
2025-02-28 23:35:15 +07:00
Steven R. Loomis
d38025b4a1 feat(developer): API for resolving line numbers for messages
- Only read the xml file once

Fixes: #10622
2025-02-28 10:32:05 -06:00
Marc Durdin
0054e76915
Merge pull request #13336 from keymanapp/fix/developer/13293-use-u0001-for-deadkey-markers-in-debugger
fix(developer): use U+0001 for deadkey markers in the debugger
2025-02-28 23:28:57 +07:00
Marc Durdin
7aa0323e74
Merge pull request #13334 from keymanapp/fix/developer/13292-handle-line-breaks-in-debugger
fix(developer): handle line breaks in debugger correctly
2025-02-28 23:27:38 +07:00
Marc Durdin
7be92a8668
Merge pull request #13327 from keymanapp/chore/add-build-edit-action-for-delphi-projects
chore: add build.sh edit action for Delphi projects
2025-02-28 23:27:03 +07:00
Steven R. Loomis
c4ca359d18 feat(developer): API for resolving line numbers for messages
- add 'column' to CompilerEvent
- Add a LdmlCompilerMessages.col() function to set the column number
- add a LdmlCompilerMessages.resolveLineNumber() to map offsets to line number

Fixes: #10622
2025-02-28 09:27:25 -06:00
Steven R. Loomis
b60c64c3d3 feat(developer): test for line number extension to xml-utils
Fixes: #10622
2025-02-27 16:42:41 -06:00
Steven R. Loomis
ec68e74bde feat(developer): add experimental char-offset data
Depends on PR https://github.com/NaturalIntelligence/fast-xml-parser/pull/728 so uses srl repository "temporarily"

Fixes: #10622
2025-02-27 16:24:21 -06:00
Marc Durdin
b92d56198b
Merge pull request #13341 from keymanapp/fix/developer/11584-prevent-opening-same-project-twice
fix(developer): prevent simultaneous opening of the same project by two processes
2025-02-27 23:18:55 +07:00
Marc Durdin
1d450f0494 fix(developer): prevent double action of editor hotkeys in debugger
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
2025-02-25 14:47:10 +01:00
Marc Durdin
324b912a07 chore(developer): cleanup code 2025-02-25 09:22:35 +01:00
Marc Durdin
10ba3c9068 fix(developer): use hashed lockfilename for projects
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
2025-02-25 09:19:14 +01:00
Marc Durdin
671b1baf6e fix(developer): prevent simultaneous opening of the same project by two processes
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
2025-02-24 18:14:00 +01:00
Marc Durdin
86e141a963 chore(developer): add missing dependency reference 2025-02-24 10:56:50 +01:00
Marc Durdin
2add4d354d fix(developer): use U+0001 for deadkey markers in the debugger
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
2025-02-24 10:38:33 +01:00
Marc Durdin
bdf6503eb6 chore(developer): Merge branch 'fix/developer/13292-handle-line-breaks-in-debugger' 2025-02-24 10:33:19 +01:00
Marc Durdin
cd29991697 fix(developer): additional cleanup of CRLF in debugger 2025-02-24 10:32:24 +01:00
Marc Durdin
3a9bbdaff7
Update developer/src/tike/child/UfrmDebug.pas 2025-02-24 09:51:00 +01:00
Marc Durdin
3c86ac332d fix(developer): handle line breaks in debugger correctly
The debugger memo takes input with \n but internally represents this as
\r\n, so we need to strip out \r in order to track caret position
correctly.

Fixes: #13292
2025-02-24 09:35:17 +01:00
Marc Durdin
a04e977749 fix(developer): include nul in offset calculations for kmw v10 compiler
The cached context comparison for v10 kmw compiler includes the `nul`
statement, unlike the comparison in the earlier compiler. This
difference was missed in earlier iterations including the recent patch
in #13003. This patch fixes the problem for both `context(n)` and
`index(store,n)` offset calculations.

Fixes: #13306
Fixes: #13307
Follows: #13003
2025-02-23 16:25:51 +01:00
Marc Durdin
ef60c08d7c chore: add build.sh edit action for Delphi projects
This opens up the Delphi IDE with the correct KEYMAN_ROOT environment,
which allows for debugging. This is very helpful when working with
multiple worktrees, and also helps to avoid editing a project in the
wrong tree.
2025-02-22 06:18:47 +01:00
Marc Durdin
1aaddf49c7 feat(developer): use .kps folder as initial dir for Add Files
Requested by @DavidLRowe. Default was either CWD or My Documents,
neither of which is helpful.

The initial dir will now be folder of the .kps file, and then will
remember last used folder for each additional use of the dialog for that
.kps file.
2025-02-22 06:13:03 +01:00
Marc Durdin
2b9b8eb419 chore(core): add unit tests to validate nul with index and context
Add 4 test keyboards to validate `nul` and `if` used in conjunction with
`index` and `context` and corresponding references in core unit tests.

Add a script to rebuild baseline keyboards using a copy of kmcomp.exe
16.0.138; this is setup and tested only on Windows (YMMV on WINE, etc).

Add the 4 additional baseline test keyboards to kmcmplib unit tests for
build consistency between kmcomp 16 and kmcmplib 18 (all pass).

Note: two of the new Core tests currently fail. This is expected, see
issue #13304.

Fixes: #13303
2025-02-21 13:06:29 +07:00