如何让IntelliJ IDEA的本地历史记录忽略插件的临时更改并恢复到文档?

时间:2013-01-13 13:17:01

标签: intellij-idea intellij-plugin

我正在here编写一个IntelliJ IDEA插件,如AceJump,用于IDE中的快速插入符号。

如下所示,通过将TextAttributes应用于所有'i'次出现,并为每个'i'赋予索引char。

enter image description here

用户按“H”后,插入符将移至“私人”中的“i”。 然后将所有标记字符更改为原始'i'

问题

  1. 此操作将在跳转期间更改文档内容。 所以会有如下的历史变化。有没有办法忽略本地历史管理中的变化?

  2. 按下Cmd-z后,会出现一个“无法撤消”的对话框。如何避免这种情况?

  3. enter image description here

    enter image description here

2 个答案:

答案 0 :(得分:3)

您应该使用(例如)HintManager类在文档上绘制导航标记,而不是更改文档内容。

如果更改实际文档内容,除了破坏撤消和本地历史记录之外,还会产生更多后果 - 例如,文档将被重新分析,从而导致显示错误的语法错误;观察文档更改的任何其他插件或IntelliJ IDEA组件都会对此作出反应;如果用户正在使用需要明确结账操作的Perforce等VCS,则将从VCS检出该文档; TL / DR:不要这样做。

答案 1 :(得分:0)

如果有人谷歌并在这里找到。以下是我的最终解决方案。

我使用Swing图形绘制来显示标记,效果很好。

请参阅详情:https://github.com/whunmr/emacsIDEAs/blob/master/src/org/hunmr/acejump/marker/MarkersPanel.java