我创建了一个复合上下文操作,它使用以下文本返回一些意图:
现在我试图通过测试来覆盖这个动作。我按照指南做了所有事情,但我无法使用caret
符号识别第一个操作。
我尝试过以下选项:
{caret:[Tag]:Action}
{caret:Tag:Action}
他们的工作注意事项:(
如果我对Second Action
做同样的事情,一切都很好。可能,问题与括号有关。
我不想更改操作的名称。你能建议如何用括号指定动作吗?
谢谢!
更新
我找到了以下解决方法:
{caret:TagAction}
。覆盖SelectItem
方法并调整属性
protected override IBulbAction SelectItem(SetFrozenAttributeAction contextAction, string attribute, ITextControl textControl)
{
if (attribute == "TagAction") attribute = "[Tag] Action";
return base.SelectItem(contextAction, attribute, textControl);
}
如果你知道更好的方式 - 建议:)
答案 0 :(得分:1)
是的,它是括号。我不知道为什么,但是当它遇到左大括号{
时,它并没有读到一个右大括号}
,而是读取它认为是的一组字符。 "有效",然后在遇到第一个无效的char时停止。有效字符为char.IsLetter
,char.IsDigit
和$
,(
,)
,,
-
,.
,/
,\
。但不是[
或]
- 所以您的{caret:[Tag] Action}
只会阅读{caret:
然后停止。
您的解决方法似乎是最好的选择!