If multiple copies of a package are saved by a browser, the browser will
typically append a ` (#)` to the filename, where `#` is a number. This
should be stripped off before installation to prevent duplicates of the
package being installed.
Fixes#2488.
Instead of just reporting on --first-parent, now lists all merges that
are in the log, which means we get some non-PR merges but that's ok. At
least we get all of them.
This was most visible with chained PRs which were merged bottom-up.
Discovered that some history entries were missing. This was because we
were calling `--first-parent` on `git log` in fixupHistory.ts. (I will
fix that in the next commit.)
I manually constructed the remaining history by hacking up
fixupHistory.ts to pull together the additional entries. A bit scary but
it worked.
For ref, I threw together the following PHP to get the list of missing
PRs:
```
<?php
$foo = shell_exec("git log --merges --oneline --decorate=short master...release-14.0.3-alpha | grep -E \"#|-alpha\"");
$foo = explode("\n", $foo);
$version = '14.0.187';
$history = file_get_contents('HISTORY.md');
foreach($foo as $line) {
$PR = null;
if(preg_match("/#(\d\d\d\d)/", $line, $matches)) {
// Is this entry a PR
if(!preg_match("/keymanapp\/auto\/version-master/", $line)) {
// Skip automatic version upgrades
$PR = $matches[1];
}
}
if(preg_match('/\(tag: release-(\d+\.\d+\.\d+)-alpha\)/', $line, $matches)) {
// Was there a version tag here?
$version = $matches[1];
}
if($PR) {
if(strpos($history, "(#$PR)") === false ) {
echo " $version: $PR [$line]\n";
}
}
}
?>
```
And I munged up fixupHistory.ts to just lookup each PR returned from
that report and splice it into HISTORY.md. That hackery is so awful I am
not sharing it here.
Fixes#1953.
Makes it possible to specify additional apps that need 'legacy' handling
without requiring an updated build of Keyman for Mac. The list should be
stored in user defaults under the `KMLegacyApps` key. It can be viewed
with the command:
```
defaults read keyman.inputmethod.Keyman KMLegacyApps
```
And updated with
```
defaults write keyman.inputmethod.Keyman KMLegacyApps -array value1 value2 ...
defaults write keyman.inputmethod.Keyman KMLegacyApps -array-add value1 value2 ...
```
Each entry should be a regex that matches the client app id.
For example:
```
defaults write keyman.inputmethod.Keyman KMLegacyApps -array com.microsoft.Word '^com.github.atom$'
```
(Note for purity, the `.` should be escaped in the regex but it'll
actually be fine without...)
This commit also adds the `keymanDataPath` method on
`KMInputMethodAppDelegate`, so we can place additional configuration
data there in the future (as opposed to in the shared config which is
less easy for users to edit.)
Fixes#3939.
Arrow keys, function keys and a handful of other keys should trigger a
context reload (for legacy apps, that means a context flush). This means
that deadkeys are also flushed when any of these keys are pressed, in
the same way as a Command key or a mouse click already did.
Relates to #3935.
This switches Java apps into legacy mode. However, Java itself will need
patching to support Keyman, as it makes assumptions about input methods,
including matching specific input methods by name, before enabling its
complex text support.
I am in process of submitting a bug report and may try and submit a
patch (although the process seems a little convoluted). It requires a
change to a single file, AWTView.m, with the following diff (against
JDK 16.0):
diff --git a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m
index 3e80b5a6cf3..2ae1f4f3f12 100644
--- a/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m
+++ b/src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m
@@ -263,6 +263,16 @@ - (void) keyDown: (NSEvent *)event {
fProcessingKeystroke = YES;
fKeyEventsNeeded = YES;
+ if([(NSString *)kbdLayout containsString:@"keyman"]) {
+ // Keyman handles all key events; none should be
+ // passed through as default before Keyman processes them
+ fKeyEventsNeeded = NO;
+ }
// Allow TSM to look at the event and potentially send back NSTextInputClient messages.
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
@@ -960,7 +989,9 @@ - (void) insertText:(id)aString replacementRange:(NSRange)replacementRange
if ((utf16Length > 2) ||
((utf8Length > 1) && [self isCodePointInUnicodeBlockNeedingIMEvent:codePoint]) ||
- ((codePoint == 0x5c) && ([(NSString *)kbdLayout containsString:@"Kotoeri"]))) {
+ ((codePoint == 0x5c) && ([(NSString *)kbdLayout containsString:@"Kotoeri"])) ||
+ ([(NSString *)kbdLayout containsString:@"keyman"])
+ ) {
aStringIsComplex = YES;
}
Follow-on to #3926
* Use `oem/fv/ios` and `oem/fv/android` for FV changes
* Add missing commit types
* Changes `deps` to use scopes (dependabot changes)