我一直在使用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
,但我真的不知道那是什么。因此出现两个问题:
aBuilder
是什么?如何得到它?答案 0 :(得分:5)
让我给您一些有关如何找到解决方案的提示(因为这可能比一次提供解决方案更有价值)
问题是aBuilder
对吗?好吧,从表达式
(aBuilder shortcut: #jumpToNextKeywordOfIt)
我们推断aBuilder
是对#shortcut:
做出回应的人。 Cmd + m,您将获得#shortcut:
的9个实现者。其中一个KMBuilder
有一个有趣的名字。而且,其shortcut:
的实现是
shortcut: aKeymapName
^KMKeymapBuilder
for: aKeymapName
platform: platform
表示它将使用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,看看我们是否停止了……宾果游戏!我的意思是,停下来!