假设我有一个像这样的多行语句:
1 to: 5 do: [:i|
Transcript show: i.
Transcript cr].
Run Code Online (Sandbox Code Playgroud)
目前,当我将文本光标放在某行上(不选择任何内容)并按 Cmd+d 时,Pharo 会尝试执行当前行。但如果默认情况下(当没有选择任何内容时)Pharo 会执行当前语句(即所有这三行语句),而不仅仅是当前行,这对我来说会更方便。因为这是比“我想执行语句内的这一特定行”更常见的情况(“我想执行整个语句”)(在大多数情况下,这在语法上没有意义,因为第一行和第三行这里)。在这些后面的情况下(当我需要在语句中执行一行时)我会手动预先选择该行。
我怎样才能实现这个目标?
小智 1
回答您的问题:看一下文本组件。它有一些评估、选择和执行的方法。如果没有选择任何内容,它会尝试选择当前行。您可以更改此实现以查找最顶层的语句“范围”。如果您使用代码 AST 而不是文本,这是可能的。我曾经使用过这个方法,以使注释内的代码表达式更加智能。(这并不适用于所有情况,因为在不同的工具(浏览器)中,获取方法 AST 的上下文对于此文本组件并不总是相同/工作空间/和其他))
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |