InputHandler // Use .ofSymbolTable() to handle `%symboldef`.

This commit is contained in:
ShikiSuen 2023-06-19 22:48:32 +08:00
parent cfdd6fdc1b
commit 7df892c541
2 changed files with 20 additions and 0 deletions

View File

@ -1089,4 +1089,22 @@ extension InputHandler {
}
return false
}
// MARK: -
func handleCassetteSymbolTable(input: InputSignalProtocol) -> Bool {
guard let delegate = delegate else { return false }
guard prefs.cassetteEnabled else { return false }
let inputText = input.text
guard !inputText.isEmpty else { return false }
let queryString = calligrapher + inputText
let maybeResult = currentLM.cassetteSymbolDataFor(key: queryString)
guard let result = maybeResult else { return false }
let root = CandidateNode(name: queryString, symbols: result)
// commit buffer ESC
let textToCommit = generateStateOfInputting(sansReading: true).displayedText
delegate.switchState(IMEState.ofCommitting(textToCommit: textToCommit))
delegate.switchState(IMEState.ofSymbolTable(node: root))
return true
}
}

View File

@ -148,6 +148,8 @@ extension InputHandler {
return handleHaninKeyboardSymbolModeToggle()
}
if handleCassetteSymbolTable(input: input) { return true }
let hasQuickCandidates: Bool = state.type == .ofInputting && state.isCandidateContainer
if input.modifierFlags == .shift {