2.8.5 SP1 // Bug fixes. Merge PR#166 from upd/2.8.5sp1
This commit is contained in:
commit
a8b6b350b9
|
@ -151,9 +151,19 @@ extension vChewingLM.LMUserOverride {
|
|||
}
|
||||
}
|
||||
|
||||
// MARK: - Hash and Dehash the entire UOM data
|
||||
// MARK: - Hash and Dehash the entire UOM data, etc.
|
||||
|
||||
extension vChewingLM.LMUserOverride {
|
||||
public func bleachSpecifiedSuggestions(target: String, saveCallback: @escaping () -> Void) {
|
||||
for neta in mutLRUMap {
|
||||
if neta.value.observation.overrides.keys.contains(target) {
|
||||
mutLRUMap.removeValue(forKey: neta.key)
|
||||
}
|
||||
}
|
||||
resetMRUList()
|
||||
saveCallback()
|
||||
}
|
||||
|
||||
/// 自 LRU 辭典內移除所有的單元圖。
|
||||
public func bleachUnigrams(saveCallback: @escaping () -> Void) {
|
||||
for key in mutLRUMap.keys {
|
||||
|
|
|
@ -43,12 +43,11 @@ extension Megrez {
|
|||
|
||||
extension Array where Element == Megrez.Unigram {
|
||||
/// 給定過濾清單,讓單元圖陣列自我過濾。
|
||||
/// 在此基礎之上,對於相同詞值的多個單元圖,僅保留權重最大者。
|
||||
public mutating func consolidate(filter theFilter: Set<String> = .init()) {
|
||||
var inserted: [String: Double] = [:]
|
||||
var insertedArray: [Megrez.Unigram] = []
|
||||
for neta in filter({ !theFilter.contains($0.value) }) {
|
||||
if let existed = inserted[neta.value], existed >= neta.score { continue }
|
||||
if inserted.keys.contains(neta.value) { continue }
|
||||
inserted[neta.value] = neta.score
|
||||
insertedArray.append(neta)
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ public protocol StateDataProtocol {
|
|||
var attributedStringNormal: NSAttributedString { get }
|
||||
var attributedStringMarking: NSAttributedString { get }
|
||||
var attributedStringPlaceholder: NSAttributedString { get }
|
||||
var userPhraseKVPair: (String, String) { get }
|
||||
var userPhraseDumped: String { get }
|
||||
var userPhraseDumpedConverted: String { get }
|
||||
var doesUserPhraseExist: Bool { get }
|
||||
|
|
|
@ -62,7 +62,7 @@ extension KeyHandler {
|
|||
composer.receiveKey(fromString: input.text)
|
||||
keyConsumedByReading = true
|
||||
|
||||
// 沒有調號的話,只需要 updateClientdisplayedText() 且終止處理(return true)即可。
|
||||
// 沒有調號的話,只需要 setInlineDisplayWithCursor() 且終止處理(return true)即可。
|
||||
// 有調號的話,則不需要這樣,而是轉而繼續在此之後的處理。
|
||||
if !composer.hasToneMarker() {
|
||||
stateCallback(buildInputtingState)
|
||||
|
@ -119,7 +119,7 @@ extension KeyHandler {
|
|||
// 之後就是更新組字區了。先清空注拼槽的內容。
|
||||
composer.clear()
|
||||
|
||||
// 再以回呼組字狀態的方式來執行 updateClientdisplayedText()。
|
||||
// 再以回呼組字狀態的方式來執行 setInlineDisplayWithCursor()。
|
||||
var inputting = buildInputtingState
|
||||
inputting.textToCommit = textToCommit
|
||||
stateCallback(inputting)
|
||||
|
@ -151,7 +151,7 @@ extension KeyHandler {
|
|||
|
||||
/// 是說此時注拼槽並非為空、卻還沒組音。這種情況下只可能是「注拼槽內只有聲調」。
|
||||
if keyConsumedByReading {
|
||||
// 以回呼組字狀態的方式來執行 updateClientdisplayedText()。
|
||||
// 以回呼組字狀態的方式來執行 setInlineDisplayWithCursor()。
|
||||
stateCallback(buildInputtingState)
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -610,6 +610,17 @@ public enum LMMgr {
|
|||
group.notify(queue: DispatchQueue.main) {}
|
||||
}
|
||||
|
||||
public static func bleachSpecifiedSuggestions(target: String, mode: Shared.InputMode) {
|
||||
switch mode {
|
||||
case .imeModeCHS:
|
||||
Self.uomCHT.bleachSpecifiedSuggestions(target: target, saveCallback: { Self.uomCHT.saveData() })
|
||||
case .imeModeCHT:
|
||||
Self.uomCHS.bleachSpecifiedSuggestions(target: target, saveCallback: { Self.uomCHS.saveData() })
|
||||
case .imeModeNULL:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
public static func removeUnigramsFromUserOverrideModel(_ mode: Shared.InputMode) {
|
||||
switch mode {
|
||||
case .imeModeCHS:
|
||||
|
|
|
@ -103,7 +103,11 @@ public class PrefMgr: PrefMgrProtocol {
|
|||
public var upperCaseLetterKeyBehavior: Int
|
||||
|
||||
@AppProperty(key: UserDef.kTogglingAlphanumericalModeWithLShift.rawValue, defaultValue: true)
|
||||
public var togglingAlphanumericalModeWithLShift: Bool
|
||||
public var togglingAlphanumericalModeWithLShift: Bool {
|
||||
didSet {
|
||||
SessionCtl.theShiftKeyDetector.alsoToggleWithLShift = togglingAlphanumericalModeWithLShift
|
||||
}
|
||||
}
|
||||
|
||||
@AppProperty(key: UserDef.kDisableShiftTogglingAlphanumericalMode.rawValue, defaultValue: false)
|
||||
public var disableShiftTogglingAlphanumericalMode: Bool
|
||||
|
|
|
@ -173,6 +173,7 @@ extension SessionCtl {
|
|||
keyHandler.clear() // 這句不要砍,因為後面 handle State.Empty() 不一定執行。
|
||||
keyHandler.ensureKeyboardParser()
|
||||
|
||||
Self.theShiftKeyDetector.alsoToggleWithLShift = PrefMgr.shared.togglingAlphanumericalModeWithLShift
|
||||
if isASCIIMode, !isCapsLocked, PrefMgr.shared.disableShiftTogglingAlphanumericalMode { isASCIIMode = false }
|
||||
if isCapsLocked { isASCIIMode = isCapsLocked } // 同步 Caps Lock 狀態。
|
||||
|
||||
|
|
|
@ -39,6 +39,13 @@ extension SessionCtl: KeyHandlerDelegate {
|
|||
{
|
||||
return false
|
||||
}
|
||||
// 開始針對使用者半衰模組的清詞處理
|
||||
let rawPair = state.data.userPhraseKVPair
|
||||
let valueCurrent = rawPair.1
|
||||
let valueReversed = ChineseConverter.crossConvert(rawPair.1)
|
||||
LMMgr.bleachSpecifiedSuggestions(target: valueCurrent, mode: IMEApp.currentInputMode)
|
||||
LMMgr.bleachSpecifiedSuggestions(target: valueReversed, mode: IMEApp.currentInputMode.reversed)
|
||||
// 清詞完畢
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.8.5</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2850</string>
|
||||
<string>2851</string>
|
||||
<key>UpdateInfoEndpoint</key>
|
||||
<string>https://gitee.com/vchewing/vChewing-macOS/raw/main/Update-Info.plist</string>
|
||||
<key>UpdateInfoSite</key>
|
||||
|
|
|
@ -1272,7 +1272,7 @@
|
|||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
|
@ -1312,7 +1312,7 @@
|
|||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
|
@ -1351,7 +1351,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
|
@ -1404,7 +1404,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
|
@ -1539,7 +1539,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
|
@ -1600,7 +1600,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_ASSET_PATHS = "";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
|
@ -1648,7 +1648,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
|
@ -1694,7 +1694,7 @@
|
|||
CODE_SIGN_IDENTITY = "-";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COMBINE_HIDPI_IMAGES = YES;
|
||||
CURRENT_PROJECT_VERSION = 2850;
|
||||
CURRENT_PROJECT_VERSION = 2851;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
|
|
Loading…
Reference in New Issue