簡體   English   中英

在Pharo中重新加載鍵盤快捷方式定義

[英]Reloading keyboard shortcut definitions in Pharo

我一直在使用Pharo 7.0中的鍵盤快捷鍵。 我想在Smalltalk編輯器中修改#jumpToNextKeywordOfIt的綁定,因此我對buildShortcutsOn方法的定義進行了以下更改:

(aBuilder shortcut: #jumpToNextKeywordOfIt)
    category: RubSmalltalkEditor name
    default: $y meta shift
    do: [ :target | target editor jumpToNextKeywordOfIt: true ]
    description: 'Jump to next keyword'.    

我的第一個想法是,僅保存此定義應立即生效,但事實並非如此。 然后我想,也許因為這是方法定義的一部分,然后在編輯器類上調用此方法就可以了。 現在,該方法接受一個參數aBuilder ,我真的不知道那是什么。 因此出現兩個問題:

  1. 這是將鍵綁定更改應用於正在運行的編輯器的正確方法嗎?
  2. 在這種情況下什么是aBuilder ?如何獲得它?

讓我給您一些有關如何找到解決方案的提示(因為這可能比一次提供解決方案更有價值)

問題是什么是aBuilder 好吧,從表達

(aBuilder shortcut: #jumpToNextKeywordOfIt)

我們推斷aBuilder是響應#shortcut: Cmd + m,您將獲得9個#shortcut:實現者。 其中之一, KMBuilder有一個有趣的名字。 而且,它的shortcut:實現是shortcut:

shortcut: aKeymapName
  ^KMKeymapBuilder 
    for: aKeymapName
    platform: platform

表示它將使用KMKeymapBuilder實例進行KMKeymapBuilder 瀏覽此類,並驗證其是否理解表達式中的下一條消息:

category: RubSmalltalkEditor name
default: $y meta shift
do: [ :target | target editor jumpToNextKeywordOfIt: true ]
description: 'Jump to next keyword'.

是的! 所以一定是這樣! 要檢查這一點,我們仍然需要KMBuilder的實例。 瀏覽班級,轉到班級側並找到一元消息#keymap

這意味着我們可以通過評估獲得aBuilder

KMBuilder keymap

我喜歡一元信息。 特別是當他們在課堂上時!

現在轉到您已經調整過的#buildShortcutsOn:方法的實現者。 它是在類端實現的,我們現在可以評估:

RubTextEditor buildShortcutsOn: KMBuilder keymap

為確保其正常工作,現在轉到所需的處理程序#jumpToNextKeywordOfIt:並在其中插入halt 這是在同一類中,在實例方面。

現在讓我們按Cmd + Shift + y,看看我們是否停止了……賓果游戲! 我的意思是,停下來!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM