diff --git a/Source/Modules/ControllerModules/ctlInputMethod_Core.swift b/Source/Modules/ControllerModules/ctlInputMethod_Core.swift index 022a7e30..c66603e7 100644 --- a/Source/Modules/ControllerModules/ctlInputMethod_Core.swift +++ b/Source/Modules/ControllerModules/ctlInputMethod_Core.swift @@ -311,15 +311,19 @@ class ctlInputMethod: IMKInputController { return arrResult } + /// IMK 選字窗限定函式,只要選字窗內的高亮內容選擇出現變化了、就會呼叫這個函式。 + /// - Parameter _: 已經高亮選中的候選字詞內容。 override open func candidateSelectionChanged(_: NSAttributedString!) { - // 暫時不需要擴充這個函數。但有些幹話還是要講的: - // 在這個函數當中試圖(無論是否拿著傳入的參數)從 ctlCandidateIMK 找 identifier 的話, + // 暫時不需要擴充這個函式。但有些幹話還是要講的: + // 在這個函式當中試圖(無論是否拿著傳入的參數)從 ctlCandidateIMK 找 identifier 的話, // 只會找出 NSNotFound。你想 NSLog 列印看 identifier 是多少,輸入法直接崩潰。 // 而且會他媽的崩得連 console 內的 ips 錯誤報告都沒有。 // 在下文的 candidateSelected() 試圖看每個候選字的 identifier 的話,永遠都只能拿到 NSNotFound。 // 衰洨 IMK 真的看上去就像是沒有做過單元測試的東西,賈伯斯有檢查過的話會被氣得從棺材裡爬出來。 } + /// IMK 選字窗限定函式,只要選字窗確認了某個候選字詞的選擇、就會呼叫這個函式。 + /// - Parameter candidateString: 已經確認的候選字詞內容。 override open func candidateSelected(_ candidateString: NSAttributedString!) { if state is InputState.AssociatedPhrases { if !mgrPrefs.alsoConfirmAssociatedCandidatesByEnter { diff --git a/Source/Modules/LanguageParsers/Megrez/3_Candidate.swift b/Source/Modules/LanguageParsers/Megrez/3_Candidate.swift index ddca9506..2e57e6cd 100644 --- a/Source/Modules/LanguageParsers/Megrez/3_Candidate.swift +++ b/Source/Modules/LanguageParsers/Megrez/3_Candidate.swift @@ -57,7 +57,7 @@ extension Megrez.Compositor { /// 返回在當前位置的所有候選字詞(以詞音配對的形式)。如果組字器內有幅位、且游標 /// 位於組字器的(文字輸入順序的)最前方(也就是游標位置的數值是最大合規數值)的 - /// 話,那麼這裡會用到 location - 1、以免去在呼叫該函數後再處理的麻煩。 + /// 話,那麼這裡會用到 location - 1、以免去在呼叫該函式後再處理的麻煩。 /// - Parameter location: 游標位置。 /// - Returns: 候選字音配對陣列。 public func fetchCandidates(at location: Int, filter: CandidateFetchFilter = .all) -> [Candidate] { @@ -105,7 +105,7 @@ extension Megrez.Compositor { /// 使用給定的候選字詞字串,將給定位置的節點的候選字詞改為與之一致的候選字詞。 /// - /// 注意:如果有多個「單元圖資料值雷同、卻讀音不同」的節點的話,該函數的行為結果不可控。 + /// 注意:如果有多個「單元圖資料值雷同、卻讀音不同」的節點的話,該函式的行為結果不可控。 /// - Parameters: /// - candidate: 指定用來覆寫為的候選字(字串)。 /// - location: 游標位置。 diff --git a/Source/Modules/LanguageParsers/Megrez/6_Node.swift b/Source/Modules/LanguageParsers/Megrez/6_Node.swift index a42f1788..4bcbe712 100644 --- a/Source/Modules/LanguageParsers/Megrez/6_Node.swift +++ b/Source/Modules/LanguageParsers/Megrez/6_Node.swift @@ -17,20 +17,20 @@ extension Megrez.Compositor { /// [("a", -114), ("b", -514), ("c", -1919)] 的話,指定該覆寫行為則會導致該節 /// 點返回的結果為 ("c", -114)。該覆寫行為多用於諸如使用者半衰記憶模組的建議 /// 行為。被覆寫的這個節點的狀態可能不會再被爬軌行為擅自改回。該覆寫行為無法 - /// 防止其它節點被爬軌函數所支配。這種情況下就需要用到 kOverridingScore - /// - withHighScore: 將該節點權重覆寫為 kOverridingScore,使其被爬軌函數所青睞。 + /// 防止其它節點被爬軌函式所支配。這種情況下就需要用到 kOverridingScore + /// - withHighScore: 將該節點權重覆寫為 kOverridingScore,使其被爬軌函式所青睞。 public enum OverrideType: Int { case withNoOverrides = 0 case withTopUnigramScore = 1 case withHighScore = 2 } - /// 一個用以覆寫權重的數值。該數值之高足以改變爬軌函數對該節點的讀取結果。這裡用 - /// 「0」可能看似足夠了,但仍會使得該節點的覆寫狀態有被爬軌函數忽視的可能。比方說 + /// 一個用以覆寫權重的數值。該數值之高足以改變爬軌函式對該節點的讀取結果。這裡用 + /// 「0」可能看似足夠了,但仍會使得該節點的覆寫狀態有被爬軌函式忽視的可能。比方說 /// 要針對索引鍵「a b c」複寫的資料值為「A B C」,使用大寫資料值來覆寫節點。這時, - /// 如果這個獨立的 c 有一個可以拮抗權重的詞「bc」的話,可能就會導致爬軌函數的算法 + /// 如果這個獨立的 c 有一個可以拮抗權重的詞「bc」的話,可能就會導致爬軌函式的算法 /// 找出「A->bc」的爬軌途徑(尤其是當 A 和 B 使用「0」作為複寫數值的情況下)。這樣 - /// 一來,「A-B」就不一定始終會是爬軌函數的青睞結果了。所以,這裡一定要用大於 0 的 + /// 一來,「A-B」就不一定始終會是爬軌函式的青睞結果了。所以,這裡一定要用大於 0 的 /// 數(比如野獸常數),以讓「c」更容易單獨被選中。 public static let kOverridingScore: Double = 114_514 diff --git a/Source/Modules/UIModules/CandidateUI/ctlCandidateIMK.swift b/Source/Modules/UIModules/CandidateUI/ctlCandidateIMK.swift index c280698d..25c1e227 100644 --- a/Source/Modules/UIModules/CandidateUI/ctlCandidateIMK.swift +++ b/Source/Modules/UIModules/CandidateUI/ctlCandidateIMK.swift @@ -241,7 +241,7 @@ public class ctlCandidateIMK: IMKCandidates, ctlCandidateProtocol { } override public func interpretKeyEvents(_ eventArray: [NSEvent]) { - // 我不知道為什麼這個函數接收的參數是陣列,但經過測試卻發現這個函數收到的陣列往往內容只有一個。 + // 鬼知道為什麼這個函式接收的參數是陣列,但經過測試卻發現這個函式收到的陣列往往內容只有一個。 // 這也可能是 Objective-C 當中允許接收內容為 nil 的一種方式。 guard !eventArray.isEmpty else { return } let event = eventArray[0]