[英]Pharo: customizing smart characters
設置瀏覽器的“代碼完成”部分中的“智能字符”復選框(至少)有兩件事:
1)鍵入時,它會加倍一些字符:',“,(,[,{
2)它可以選擇一段代碼,按(
(即Shift+9
),所選代碼被括號括起來:( ()
。我也可以通過按(
再次。 ()
來刪除括號。我也可以這樣做[]
按[
和{}
按{
,即Shift+[
。
我不喜歡這些東西中的第一個,所以我想禁用它,但我喜歡第二件事,並希望保留它。 我怎樣才能做到這一點? 關閉復選框將禁用這兩個選項。
PS我知道當復選框關閉時,添加/刪除括號的工作方式是Cmd+Shift+9
(不如Shift+9
方便)和Cmd+[
適用於[]
,雖然我不知道任何工作快捷方式可以添加/當復選框關閉時刪除{}
。
該設置稱為“智能字符”,它可以為您提供查看位置的線索。 打開Finder,輸入smartCharacters
,然后按Enter鍵 。 您應該看到一些部分匹配以及NECController
和NECPreferences class
的完全匹配(前者只調用后者)。 如果你稍微研究一下這些類,你會看到smartCharacters
存儲一個布爾值,而smartCharactersMapping
返回一個字典,將一些字符映射到它們的“對應物”,即$[
to $]
等等。 現在看看smartCharactersMapping
發件人,你會看到它的調用位置。
您最有可能感興趣的調用者是NECController>>smartCharacterWithEvent
。 因此,在這個非常丑陋的方法中設置一個斷點來查看它的作用。 您不關心前兩種情況(編輯器有選擇而沒有智能映射),因為您希望防止插入第二個匹配字符。 所以有趣的是這一點:
self newSmartCharacterInsertionStringForLeft: char right: opposite
該方法只有一個實現者和一個發送者,因此注釋掉原始方法並返回“左”字符應該是安全的,即:
newSmartCharacterInsertionStringForLeft: left right: right
^String with: left
換句話說,不是創建一個包含左右字符的字符串,也可能是它們之間的空格,只需返回一個包含您鍵入的單個字符的新字符串。 可能不是解決這個問題的最優雅的方法,但它應該有效,並且應該向您展示如何在將來解決類似的問題。
(理想情況下,你會找到一個更好的解決方案,在這里作為替代答案發布,並將其貢獻給Pharo代碼庫 - 畢竟,Pharo是開源的。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.