2

我在这里写了一个 IntelliJ IDEA 插件,比如AceJump,它用于 IDE 中的快速移动插入符号。

如下所示,通过将 TextAttributes 应用于所有 'i' 出现,并给每个 'i' 一个索引字符。

在此处输入图像描述

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

问题

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

  2. 按 Cmd-z 后,有一个对话框显示“无法撤消”。如何避免这种情况?

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

3

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

如果你改变了实际的文档内容,除了破坏撤消和本地历史之外,这将产生更多的后果——例如,文档将被重新解析,导致显示错误的语法错误;监视文档更改的任何其他插件或 IntelliJ IDEA 组件都会对此做出反应;如果用户正在使用需要显式签出操作的诸如 Perforce 之类的 VCS,则该文档将从 VCS 中签出;等等 TL/DR:不要那样做。

于 2013-01-13T17:13:39.653 回答
0

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

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

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

于 2013-01-15T16:24:05.800 回答