【发布时间】:2011-09-02 12:43:53
【问题描述】:
我在 CDT 中有一个自定义构建器,它将很多文件添加到项目目录中。我希望从 Project Explorer 中过滤掉这些文件,但无法弄清楚如何(文件掩码为 *.ooj)。
是否可以通过文件掩码将自定义过滤器添加到自定义视图中?或者也许有另一种方法可以在 Project Explorer 中隐藏文件?
【问题讨论】:
标签: eclipse eclipse-cdt
我在 CDT 中有一个自定义构建器,它将很多文件添加到项目目录中。我希望从 Project Explorer 中过滤掉这些文件,但无法弄清楚如何(文件掩码为 *.ooj)。
是否可以通过文件掩码将自定义过滤器添加到自定义视图中?或者也许有另一种方法可以在 Project Explorer 中隐藏文件?
【问题讨论】:
标签: eclipse eclipse-cdt
以下是在 Eclipse Indigo/Luna/Neon 上的操作方法(截至 2018-05-22):
【讨论】:
您可以为此定义一个过滤器。在 Package Explorer 中打开视图菜单,然后选择“Filters...”,您可以在此处定义隐藏文件的模式。
【讨论】:
Filters 选项。我需要单击自定义视图来访问Filters。但是只有预定义的过滤器,例如“存档文件”、“Java 文件”等,并且没有添加/编辑这些过滤器的选项
如何将全局用户定义资源过滤器添加到 Eclipse Project Explorer 视图:
在项目级别修改和切换过滤器需要多次点击,如果您的工作区中有许多项目,可能会很乏味。如果您需要一次又一次地在所有项目上应用或切换相同的过滤器设置,您可能希望为所有项目和所有工作区提供更快的全局解决方案。
修改plugins/org.eclipse.ui.navigator.resources_{version}.jar中的文件plugin.xml和plugin.properties(提取、修改并重新添加修改后的文件)。
例如,将plugin.xml 中的仅文件过滤器添加到元素/plugin/extension @point="org.eclipse.ui.navigator.navigatorContent":
<commonFilter id="org.eclipse.ui.navigator.resources.filters.{unique-id-a}" name="%filters.{unique-id-a}.name" description="%filters.{unique-id-a}.description" activeByDefault="true|false">
<filterExpression>
<and>
<instanceof value="org.eclipse.core.resources.IFile"/>
<test property="org.eclipse.core.resources.name" value="{file-wildcard-pattern-a}"/>
</and>
</filterExpression>
</commonFilter>
再举一个例子,将plugin.xml 中的文件和目录过滤器添加到同一个元素:
<commonFilter id="org.eclipse.ui.navigator.resources.filters.{unique-id-b}" name="%filters.{unique-id-b}.name" description="%filters.{unique-id-b}.description" activeByDefault="true|false">
<filterExpression>
<and>
<adapt type="org.eclipse.core.resources.IResource">
<test property="org.eclipse.core.resources.name" value="{file-wildcard-pattern-b}"/>
</adapt>
</and>
</filterExpression>
</commonFilter>
为plugin.properties 中添加的所有过滤器提供过滤器名称和描述。 Project Explorer 视图中的过滤器显示顺序是按此过滤器名称排列的,与过滤器类型无关:
filters.{unique-id-a}.name={file-wildcard-pattern-a} files
filters.{unique-id-a}.description=Hides files that match "{file-wildcard-pattern-a}"
filters.{unique-id-b}.name={file-wildcard-pattern-b} files and folders
filters.{unique-id-b}.description=Hides files and folders that match "{file-wildcard-pattern-b}"
重启 Eclipse 并重置其缓存:eclipse.exe -clean
【讨论】:
*.orig 文件(来自 hg/git 合并):这有效:<commonFilter id="org.eclipse.ui.navigator.resources.filters.origFiles" name="%filters.origFiles.name" description="%filters.origFiles.description" activeByDefault="false"> <filterExpression> <adapt type="org.eclipse.core.resources.IFile"> <test property="org.eclipse.core.resources.name" value="*.orig" /> </adapt> </filterExpression> </commonFilter> for plugin.xml 和 ...
filters.origFiles.name=*.orig resources filters.origFiles.description=Hides resources that end with ".orig", e.g. generated on versioning system merges (e.g. Mercurial/HG, GIT) 为plugins.properties。在eclipse -clean 之后,Eclipse Kepler 中的所有内容都可用:)
首先感谢@emmzett 只是想以详细的方式解释 emmzett 的答案,因为我对编辑插件文件一无所知,我花了 2 个小时在这上面。也许我可以用这个明确的表达来节省你的时间。
plugin.xml 使用编辑器(记事本、Notepad++ 等)打开
plugin.xml文件point="org.eclipse.ui.navigator.navigatorContent"并在下面粘贴代码
<commonFilter id="org.eclipse.ui.navigator.resources.filters.SpecifyAnIdForYourFileType"
name="%filters.SpecifyAnIdForYourFileType.name"
description="%filters.SpecifyAnIdForYourFileType.description"
activeByDefault="true">
<filterExpression>
<and>
<instanceof value="org.eclipse.core.resources.IFile"/>
<test property="org.eclipse.core.resources.name" value="your specific file"/>
</and>
</filterExpression>
</commonFilter>
SpecifyAnIdForYourFileType 更改为id 的唯一名称
将 "your specific file" 更改为您的特定文件后缀,例如 *.pdf 或 desktop.ini 等。plugin.xml并退出plugin.properties用与3.step相同的编辑器打开
粘贴此代码 filters.SpecifyAnIdForYourFileType.name=your specific file files
filters.SpecifyAnIdForYourFileType.description=Hides files that match your specific file
plugin.properties并退出Project Explorer at
左侧View Menu图标Filters and Customization...
Filters 菜单中勾选您的新过滤器。这就是我要再次感谢 emmzett 的全部内容。
问候。
【讨论】: