gpt4 book ai didi

smalltalk - Pharo:自定义智能角色

转载 作者:行者123 更新时间:2023-12-01 02:00:23 26 4
gpt4 key购买 nike

设置浏览器“代码完成”部分中的“智能字符”复选框(至少)做了两件事:

1) 键入时将某些字符加倍:', ", (, [, {

2) 可以选择一段代码,按( (即 Shift+9 ),所选代码被括号括起来: () .我也可以通过按 ( 来删除括号再次。我也可以用 [] 做到这一点按 [并与 {}{ ,即 Shift+[ .

我不喜欢这些东西中的第一个,所以我想禁用它,但我喜欢第二个东西并想保留它。我怎样才能做到这一点?关闭复选框将禁用两者。

附言我知道当复选框关闭时,添加/删除括号可以通过 Cmd+Shift+9 起作用(这不如 Shift+9 方便)和 Cmd+[适用于 [] ,虽然我不知道添加/删除的任何工作快捷方式 {}当复选框关闭时。

最佳答案

该设置称为“智能字符”,它应该为您提供有关查看位置的线索。打开 Finder,输入 smartCharacters ,然后按 Enter。您应该会看到一些部分匹配以及 NECController 的完全匹配。和 NECPreferences class (前者只是调用后者)。如果您稍微调查一下所涉及的类,您会看到 smartCharacters存储一个 bool 值,以及 smartCharactersMapping返回一个将某些字符映射到它们的“对应物”的字典,即 $[$]等等。现在看看smartCharactersMapping的发件人,你会看到它是从哪里被调用的。

您最有可能感兴趣的来电者是 NECController>>smartCharacterWithEvent .所以在那个非常丑陋的方法中放置一个断点,看看它做了什么。您不关心前两种情况(编辑器有选择但没有智能映射),因为您想防止插入第二个匹配字符。所以对你来说有趣的是这一点:

self newSmartCharacterInsertionStringForLeft: char right: opposite

该方法只有一个实现者和一个发送者,因此注释掉原始方法并只返回“左”字符应该是安全的,即:
newSmartCharacterInsertionStringForLeft: left right: right
^String with: left

换句话说,不是创建一个包含左右字符以及它们之间可能有空格的字符串,只需返回一个包含您键入的单个字符的新字符串。可能不是解决这个问题的最优雅的方法,但它应该有效,并且应该向您展示如何在 future 解决类似的问题。

(理想情况下,您会找到更好的解决方案,将其作为替代答案发布在此处,并将其贡献给 Pharo 代码库 - 毕竟 Pharo 是开源的。)

关于smalltalk - Pharo:自定义智能角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37047622/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com