- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 quickfix 和 IDocument.InsertText()
方法的自定义插件。它在代码行的末尾插入一条注释,其中包含所选的荧光笔,但这会弄乱其余荧光笔从所选荧光笔到最后的位置。有什么方法可以刷新负责放置亮点的守护进程执行函数吗?
关于解决此问题的任何其他想法?
谢谢,尤瓦尔
修复前:
修复后:
最佳答案
这是由于抽象语法树与文档文本不同步造成的。通常,您会通过操纵语法树来修改源文件,语法树又会更新文档的文本。直接修改文本时,需要确保语法树收到更改通知,以便它知道要更新。
您可以通过将更新包装在事务中来做到这一点:
using(solution.CreateTransactionCookie(DefaultAction.Commit, "Update text"))
{
document.InsertText(...);
}
您可以指定调用事务 cookie 的 Dispose
方法时将发生的默认操作 - 提交或回滚,您也可以直接在事务 cookie 上调用方法。传递给 cookie 的文本是纯文本,仅用于诊断目的,因此您可以看到当前处于事件状态的交易。
更新:
查看代码后,这里的问题是当 PSI 事务处于事件状态时您无法修改文档的文本。 PSI 事务表明您要修改文档的抽象语法树,因此您不能再修改文档的文本 - 您很容易陷入两个相互冲突的更改且无法协调的情况他们。
在调用 ExecutePsiTransaction
方法之前,PSI 事务由上下文操作的 BulbActionBase
基类创建。您不能在此方法中直接修改文本。
您在这里有几个选择。您可以使用 CSharpElementFactory.GetInstance(...).CreateComment(text)
创建注释节点,然后使用 ModificationUtil
中的方法将其添加到 PSI 树中,或者您可以将 ExecutePsiTransaction
保留为空方法(返回 null
)并实现 ExecuteAfterPsiTransaction
并在那里调用 Document.InsertText
(这是 XAML InsertTextQuickFix
类所做的)。因为此方法是在事务中调用的,而不是在 PSI 事务中调用的,所以它应该更新文本,并使 PSI 恢复同步。
顺便说一句,当 PSI 事务处于事件状态时尝试修改文档时,ReSharper 会抛出异常,并显示相应的消息。如果您使用命令行 devenv.exe/ReSharper.Internal
运行 Visual Studio,此异常应在状态栏中显示为类似窗口的工具提示。更好的是,如果你正在构建一个插件,你可以 install a "checked" build ,默认情况下包括更多检查和报告异常。
关于c# - Resharper quickfix 荧光笔偏移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22545558/
quickfix 中消息存储结构的目的是什么?我知道您可以通过消息存储接口(interface)记录所有传入和传出的修复消息,并且 quickfix 提供了多种实现,例如文件存储等。 我的问题是,除了
我目前在使用开源 QuickFix 引擎时遇到了一个奇怪的问题。我们的经纪商正在发送一些 MsgType = 8(执行报告)的测试交易,我们的 QuickFix 引擎立即回复异常,并显示“不支持的消息
QuickFIX/J 包含创建四个数据库表的 SQL 脚本: session 消息 messages_log 事件日志 我找不到任何描述每个表格用途的文档。 它们有什么用,什么时候写入,它们中的任何一
我们似乎无法使用 QuickFix 处理某些群组消息。 我正在尝试使用 QuickFix (C++) 建立与 ICE 交换的连接。我创建了一个自定义数据字典来处理 ICE 的非标准消息。要处理的第一条
一个Quickfix客户端使用 XML spec files 验证传入消息。如果消息验证失败,quickfix 会自动发送拒绝响应。 AFAIK 在这种情况下,quickfix 不会调用传入消息的标准
当我登录时,我正在发送一个应用程序消息请求 (BW) 并且服务器响应多种类型的消息,但是对于安全状态消息,它返回暂停原因异常。我有 2 个 onMessage 函数,这些用于安全定义报告和安全定义更新
我是 FIX 世界的新手。我正在用 Java 编写一个处理 FIX 消息的应用程序,为此我正在使用 QuickFIX/J。我已经从主页 (http://quickfixengine.org/) 下载了
我正在尝试决定使用哪个版本,希望收到有关此主题的任何反馈。最好能得到一些优缺点。 到目前为止我所做的研究是 quickfix/n 版本会运行得更快并且可能更容易实现,但似乎确实有一些 quickfix
我正在使用 QuickFIX/J版本 1.6.4 内 Apache Camel 2.17.0,我收到 session 消息 Disconnecting: Encountered END_OF_STRE
QuickFix/J 提供将其日志存储在数据库中的功能。 是否可以将另一列(业务 ID) append 到其中一个表,从而不会在 QuickFix/J 的内部消息记录中引起问题? 如果可能的话,也请提
QuickFIX 似乎没有日志轮换功能。有没有可能以某种方式做到这一点? 最佳答案 This post shows the rotation might have been released long
我是 FIX 技术的新手,正在开发 FIX 应用程序。每当我发送 NewOrderSingle消息,我收到一个错误。 我在 C# 中使用 QuickFix 引擎并创建 RequestPlaceOrde
我试图了解QuickFIX配置文件中的StartTime和EndTime设置。我正在使用QuickFIX .Net来实现买方FIX客户端(设置为启动器)。 默认情况下,StartTime和EndTim
我们的快速修复连接传入消息存在一些问题。我们使用字典是因为消息中存在重复组,但这意味着 QuickFix 对传入消息应用严格的验证。但我遇到了服务器在没有警告的情况下更改其消息格式的问题。传入消息突然
我正在构建一个重播日志的工具。手动解析日志很烦人,所以我想知道是否有一种方法可以简单地从日志中加载消息。 此外,我并不反对仅使用第三方重放工具(如果存在)。 最佳答案 首先以任何您想要的方式读取日志文
在与 QuickFix 库捆绑在一起的 FIX.4.4 数据字典 XML 中,某些字段似乎被标记为必填字段,而这些字段可能不应该符合 FIXimate 中描述的协议(protocol)规范。 例如:
FIX 协议(protocol)是否允许在消息和重复组中重复使用相同的标记? IE。我可以有类似的东西 ...
我有一个 FixMessage,我想手动计算校验和。 8=FIX.4.2|9=49|35=5|34=1|49=ARCA|52=20150916-04:14:05.306|56=TW|10=157| 这
FIX 协议(protocol)是否允许在消息和重复组中重复使用相同的标记? IE。我可以有类似的东西 ...
本文整理了Java中quickfix.field.XmlData类的一些代码示例,展示了XmlData类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是
我是一名优秀的程序员,十分优秀!