mgrLM // Make the phrase duplication check compatible with CHS mode.

This commit is contained in:
ShikiSuen 2022-02-16 17:40:20 +08:00
parent 7cd525afe8
commit 7c2ff3f8f9
4 changed files with 14 additions and 5 deletions

View File

@ -182,7 +182,7 @@ class InputState: NSObject {
let (exactEnd, _) = (composingBuffer as NSString).characterIndex(from: markedRange.location + markedRange.length)
let selectedReadings = readings[exactBegin..<exactEnd]
let joined = selectedReadings.joined(separator: "-")
let exist = mgrLangModel.checkIfExist(userPhrase: text, key: joined)
let exist = mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined)
if exist {
return String(format: NSLocalizedString("\"%@\" already exists.", comment: ""), text)
}
@ -255,7 +255,7 @@ class InputState: NSObject {
let (exactEnd, _) = (composingBuffer as NSString).characterIndex(from: markedRange.location + markedRange.length)
let selectedReadings = readings[exactBegin..<exactEnd]
let joined = selectedReadings.joined(separator: "-")
return mgrLangModel.checkIfExist(userPhrase: text, key: joined) == true
return mgrLangModel.checkIfUserPhraseExist(userPhrase: text, mode: ctlInputMethod.currentKeyHandler.inputMode, key: joined) == true
}
@objc var userPhrase: String {

View File

@ -47,6 +47,13 @@ class ctlInputMethod: IMKInputController {
private var keyHandler: KeyHandler = KeyHandler()
private var state: InputState = InputState.Empty()
// keyHandler 調 keyHandler
// InputState ctlInputMethod
// keyHandler keyHandlerInput
// currentKeyHandler keyHandler
// currentKeyHandler
static var currentKeyHandler: KeyHandler = KeyHandler()
// MARK: - IMKInputController methods
override init!(server: IMKServer!, delegate: Any!, client inputClient: Any!) {
@ -157,6 +164,8 @@ class ctlInputMethod: IMKInputController {
keyHandler.inputMode = newInputMode
self.handle(state: .Empty(), client: client)
}
//
ctlInputMethod.currentKeyHandler.inputMode = keyHandler.inputMode
}
// MARK: - IMKServerInput protocol methods

View File

@ -32,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN
+ (BOOL)checkIfUserLanguageModelFilesExist;
+ (BOOL)checkIfUserDataFolderExists;
+ (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase key:(NSString *)key NS_SWIFT_NAME(checkIfExist(userPhrase:key:));
+ (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase inputMode:(InputMode)mode key:(NSString *)key NS_SWIFT_NAME(checkIfUserPhraseExist(userPhrase:mode:key:));
+ (BOOL)writeUserPhrase:(NSString *)userPhrase inputMode:(InputMode)mode areWeDuplicating:(BOOL)areWeDuplicating;
+ (void)setPhraseReplacementEnabled:(BOOL)phraseReplacementEnabled;
+ (void)setCNSEnabled:(BOOL)cnsEnabled;

View File

@ -207,10 +207,10 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, vChewing
return YES;
}
+ (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase key:(NSString *)key NS_SWIFT_NAME(checkIfExist(userPhrase:key:))
+ (BOOL)checkIfUserPhraseExist:(NSString *)userPhrase inputMode:(InputMode)mode key:(NSString *)key NS_SWIFT_NAME(checkIfUserPhraseExist(userPhrase:mode:key:))
{
string unigramKey = string(key.UTF8String);
vector<Unigram> unigrams = gLangModelCHT.unigramsForKey(unigramKey);
vector<Unigram> unigrams = [mode isEqualToString:imeModeCHT] ? gLangModelCHT.unigramsForKey(unigramKey): gLangModelCHS.unigramsForKey(unigramKey);
string userPhraseString = string(userPhrase.UTF8String);
for (auto unigram: unigrams) {
if (unigram.keyValue.value == userPhraseString) {