0

我创建了一个复合上下文动作,它返回几个带有以下文本的意图:

  • [标签] 行动
  • 第二次行动

现在我试图通过测试来覆盖这个动作。我按照指南做了所有事情,但我无法使用caret符号识别第一个动作。

我尝试了以下选项:

  • {caret:[Tag]:Action}
  • {caret:Tag:Action}

他们的注意事项有效:(

如果我对 做同样的Second Action事情,一切都很好。问题可能与括号有关。

我不想更改操作的名称。你能建议如何用括号指定动作吗?

谢谢!

更新

我找到了以下解决方法:

  1. 在数据文件中指定操作的别名:{caret:TagAction}.
  2. 覆盖SelectItem方法和调整属性

    protected override IBulbAction SelectItem(SetFrozenAttributeAction contextAction, string attribute, ITextControl textControl)
    {
      if (attribute == "TagAction") attribute = "[Tag] Action";
      return base.SelectItem(contextAction, attribute, textControl);
    }
    

如果你知道更好的方法 - 建议它:)

4

1 回答 1

1

对,就是括号。我不知道为什么,但是当它遇到左大括号时{,它不会读到右大括号},而是读取一组它认为“有效”的字符,然后在遇到第一个非时停止有效字符。有效字符是char.IsLetter,char.IsDigit$, (, ), , -, ., /, \. 但不是[]- 所以你{caret:[Tag] Action}只会阅读{caret:然后停止。

您的解决方法似乎是最好的选择!

于 2016-09-07T13:29:12.707 回答