关键字高亮插件

在eclipse中,如果用Ctrl+F来进行查找,它只会一个一个的找,如果使用如EmEditor之类的编辑器,则可以将所有与查找字符串匹配的内容高亮。所以我就想做一个简单类型功能的插件!

 

附件是一个高亮关键字的小插件,不过它目前有一些限制:

 

1.当前有打开的Editor,如:

 

IWorkbenchPage activePage = window.getActivePage();
  if (activePage == null || activePage.getActiveEditor() == null) {

             return;
  }

 

因为我就是想找当前打开的Editor里的内容,所以没有Editor再找就没有意义了。

 

2.Editor的Control是一个Text或者是一个StyledText

我想高亮当前Editor中所选择的字符串。不过可以支持选择的控件类型太多了,我还没想好怎么把所有的选择都支持而不论它来自哪个控件,好像挺复杂的,所以暂时就对Text类型和StyledText做支持了。如下:

 

IEditorPart activeEditor = activePage.getActiveEditor();
Object control = activeEditor.getAdapter(Control.class);

 

3.当前Editor有一个对应的Resource在工作空间中

 

selectedResource = activeEditor.getEditorInput().getAdapter(
     IResource.class);
   if (selectedResource == null) {

         return;
   }

 

一个打开的Editor 不一定有一个对应的Resource在工作空间中存在的,最简单的你可以随便从一个地方拖一个文件到Eclipse的Editor区域打开,但是如果这个文件在工作空间中不存在,那暂时这个还不支持,因前目前我是直接调用Eclipse的查找API来做的,它需要一个IResource[]参数。回头我再考虑一下怎么扩展吧!

 

4.一定要有选择的内容

 

如果用户没有选择什么东西,显示查找就没有什么意义了

if (control instanceof StyledText) {
    selectedText = ((StyledText) control).getSelectionText();
   } else if (control instanceof Text) {
    selectedText = ((Text) control).getSelectionText();
   }
   if(selectedText==null||selectedText.equals("")){

       return;
   }

 

5.其他的一些限制

 

有时即使一个操作看起来符合上面所有的要求,结果看起来可能也不会对,打开一个插件工程的插件描述文件:如果你是用MANIFEST.MF文件打开的,那么在plugin.xml页中进行查找就有问题,因为此时IResource得到的是MANIFEST.MF文件;反正在plugin.xml中也一样。

 

最后查找的结果就和Eclipse中按Ctrl+H出来的查找过程是一样的,只是结果只显示在当前Editor对应的Resource中存在的结果。至于选中后的背景颜色你可以去以下地方设置:

 

Window(菜单)-> Preferences->General->Editors->Text Editors->Annotations->Search Results

 

修改其中的Color就行了,最后结果大致如下:

 

 

 

 

 

 

 

 

你可能感兴趣的:(eclipse,xml,工作,F#)