假设我有一个这样的多行语句:
1 to: 5 do: [:i|
Transcript show: i.
Transcript cr].
目前,当我将文本光标放在某行(没有选择任何内容)并按下Cmd d时,Pharo会尝试执行当前行.但是如果默认情况下(当没有选择任何内容时)对我来说会更方便Pharo将执行当前语句(即所有这三行语句),而不仅仅是当前行.因为这是一个更频繁的情况(“我想执行整个语句”)而不是“我想在一个语句中执行这个特定的行”(在大多数情况下,这在语法上没有意义,因为第1行和第3行这里).在这些后方场合(当我需要在一个语句中执行一行时)我会手动预先选择这一行.
我怎样才能做到这一点?
最佳答案 回答你的问题:看看文本组件.它有一些评估选择和做的方法.如果未选择任何内容,则会尝试选择当前行.
您可以更改此实现以查找最顶层的语句“范围”.
如果您使用代码AST而不是文本,则可能.我用这个工作了一次,使注释中的代码表达式变得更聪明.(这对所有情况都不起作用,因为在不同的工具(浏览器)中获取方法AST的上下文对于这个文本组件并不总是相同的/ workspace /和其他))