Woj*_*Gac 2 smalltalk key-bindings pharo
我一直在使用Pharo 7.0中的键盘快捷键.我想#jumpToNextKeywordOfIt在Smalltalk编辑器中修改绑定,所以我在buildShortcutsOn方法的定义中得到了以下更改:
(aBuilder shortcut: #jumpToNextKeywordOfIt)
category: RubSmalltalkEditor name
default: $y meta shift
do: [ :target | target editor jumpToNextKeywordOfIt: true ]
description: 'Jump to next keyword'.
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是,只是保存这个定义应该立即生效,但事实并非如此.然后我想,也许因为这是方法定义的一部分,然后在编辑器类上调用这个方法就可以了.现在,该方法需要一个参数aBuilder,我真的不知道那是什么.所以出现两个问题:
aBuilder在这种背景下是什么,如何得到它?让我给你一些关于如何找到解决方案的提示(因为这可能比立即提供解决方案更有价值)
问题是什么是aBuilder对的?好吧,从表达
(aBuilder shortcut: #jumpToNextKeywordOfIt)
Run Code Online (Sandbox Code Playgroud)
我们推断出那aBuilder是一个回应的人#shortcut:.Cmd + m,你将得到9个实现者#shortcut:.其中之一,KMBuilder有一个有趣的名字.而且,它的实施shortcut:是
shortcut: aKeymapName
^KMKeymapBuilder
for: aKeymapName
platform: platform
Run Code Online (Sandbox Code Playgroud)
这意味着它会回答一个实例KMKeymapBuilder.浏览此类并验证它是否理解表达式中的下一条消息:
category: RubSmalltalkEditor name
default: $y meta shift
do: [ :target | target editor jumpToNextKeywordOfIt: true ]
description: 'Jump to next keyword'.
Run Code Online (Sandbox Code Playgroud)
它确实!所以这一定是它!要检查这一点,我们仍然需要一个实例KMBuilder.浏览课程,转到课程侧并找到一元消息#keymap.
这意味着我们可以aBuilder通过评估获得
KMBuilder keymap
Run Code Online (Sandbox Code Playgroud)
我喜欢一元信息.特别是当他们在课堂上!
现在转到已经调整过的方法的实现者#buildShortcutsOn:.它是在课堂上实现的,我们现在可以评估:
RubTextEditor buildShortcutsOn: KMBuilder keymap
Run Code Online (Sandbox Code Playgroud)
为了确保它正常工作,现在转到所需的处理程序#jumpToNextKeywordOfIt:并halt在其中插入一个.这是在同一个类,实例方面.
现在让我们按Cmd + Shift + y,看看我们是否停止了......宾果!我的意思是,停止!