Previously the builder scripts defined a readonly `VERSION` environment
variable for the Keyman version. That caused problems when another
(external) script tried to define a `VERSION` variable. We encountered
this problem when trying to move the TC build steps of a configuration
into a single script (#13399) when we tried to source `~/.nvm/nvm.sh`.
This change uses a Keyman specific prefix for the version variables and
renames `VERSION` → `KEYMAN_VERSION` etc. Unfortunately these variables
are used in a lot of places, so this turned out to be a bit of a yak
shave.
Test-bot: skip
Follows on from the similar changes to `Keyboard` fields in #13600. This
deprecates the `RTL` and `Name` fields. `RTL` was never used. `Name` was
written but never presented to end users, so effectively irrelevant.
`Name` also was present in `File.Description` (already deprecated) for
the corresponding model.js _and_ `Info.Name`, so doubly redundant.
Also updates the schema documentation to mark the deprecated fields.
Relates-to: #13600
The fields 'name', 'version', and 'rtl' were defined in the .kps file,
but were not actually used by the compiler, as kmc-package reads the
metadata from the keyboard file rather than relying on this data, which
often is out of date. This led to confusion for keyboard authors, so
this change removes that metadata from the package.
The one visible side-effect (apart from the data disappearing from
future .kps files) is that the package editor no longer shows this
metadata in the Keyboards view (but as it may be out-of-date, this is
probably a good thing).
Fixes: #13576Fixes: #13593
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
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
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.
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.
When the IDE fills the On Screen Keyboard on the basis of the .kmn
rules, it generates a temporary .kmn and builds it. When it does this,
it temporarily replaces the `&targets` system store with one that is
supposed to ensure that a .kmx is generated. However, previously, for
reasons long lost in history, the store was filled with the value
'windows native'.
'native' is not a valid target (this may be due to confusion with
`if(&platform)` where 'native' is permitted), and now the compiler
verifies `&targets` (as of #11918), so this broke the compile.
Now uses 'desktop' (which encompasses 'windows', 'macos', 'linux').
Fixes: #13256
Relates-to: #11918
* Links welcome.htm in the package details for all project types
* Uses v17 project file format for new lexical model projects
* Nit: changes shortcut key for 'supported languages' from 'l' to 's'
to fix conflict with 'full copyright'.
Fixes: #13135
* Add unit test to verify the format of message detail strings
(max line length of 80 chars)
* Add unit test to verify non-null, non-empty message strings
* Tidy up a number of messages (to pass unit tests)
* Add message details for all kmw compiler messages
* Add a clickable link for the TIKE message window for each message
so that explanations and further message details are more accessible
to authors (`kmc message` is already available for command-line users)
* Fixes a number of minor issues with the messages window in TIKE,
mostly relating to when popup menu commands are enabled and how
messages are selected.
Fixes: #13134
Keyman Core expects US English virtual key codes, so make sure that the
debuggers translate the key codes they receive from Windows to the hard-
coded values for US English, as defined in ScanCodeMap.
Fixes: #13052
Adds a new set of 'New Project' dialogs to allow authors to easily copy
keyboards from local filesystem, Keyman Cloud (including a keyboard
search web page, implemented in keymanapp/keyman.com#536), and
directly from a GitHub URL. Adds related documentation.
Fixes: #13073
Depends-on: keymanapp/keyman.com#536
Adds 'verbose' and 'debug' log levels and corresponding error severity
levels. This means the internal error severity values have changed to
match - 'info' is now 2 instead of 0.
Fixes: #12975
Adds a new design-time font property for when `&displayMap` is in use in
a keyboard, so that the web debugger can use that font as appropriate.
If the keyboard does not have a `&displayMap` store, then the DisplayMap
font property is disabled, and the web debugger will use the OSK Font
instead, as previously was the case.
Note that the font for `&displayMap` has to be installed on the keyboard
author's system in order for it to be served up.
Fixes: #12123
When pasting into the wordlist grid, the editor will now check if the
clipboard text contains newlines or tabs, and if so, will paste the
text as new rows in the wordlist (with a prompt), rather than pasting
the whole text into the current cell.
If the clipboard text does not contain NL or TAB then the default
in-cell editor paste handling will run.
Fixes: #12517
Adds support for using RichEdit 4.1, and sets the richedit control into
the correct mode for rendering arbitrary Unicode correctly. Removes
some unnecessary per-character refresh for improved performance.
Fixes: #12454
RichEdit allows text selection one character past end-of-string, so we
need to cater for that as well in passing text ranges to the character
grid.
Fixes: #12454