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