我正在尝试将快捷键( Ctrl + Shift + f )引入我们的自定义编辑器以格式化内容。
我已经实施了以下更改。
通过添加带有定义ID /架构/上下文的密钥扩展,添加了对插件xml的更改。
通过扩展TextEditorAction类实现Action,如下所示。
@Override
public void run() {
this.doOperation(ISourceViewer.FORMAT);
}
通过实施IContentFormatter
实现了一个Formatter类。
通过覆盖sourceVIewConfiguration
将上述Formatter类传递给我们的cutomized SourceViewerConfiguration
(扩展getContentFormatter
)类。
在我们定制的编辑器类中覆盖了createActions()
API,该类扩展了TextEditor
。
由于某种原因,我的快捷键无效。我在我的动作类中放了一个调试点,当我按下快捷键时,注意到控制器没有进入那里。
我还注意到新创建的密钥不会显示在首选项下 - >键列表。
有人可以提供指针或示例来解决问题。
<key
commandId="com.language.javascripteditor.XJSFormatAction"
schemeId="myScheme"
sequence="M1+M2+z"/>
<scheme
id="myScheme"
name="myScheme">
</scheme>
public class JavaScriptEditorFormatter implements IContentFormatter {
@Override
public void format(IDocument document, IRegion region) {
try {
String content =document.get(region.getOffset(), region.getLength());
String formatted = new JSBeautifier().js_beautify(content,null);
document.replace(region.getOffset(), region.getLength(), formatted);
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Override
public IFormattingStrategy getFormattingStrategy(String contentType) {
throw new UnsupportedOperationException();
}
}
为自定义架构添加了一个新属性文件,名称为plugin_customization.ini,内容如下所示
org.eclipse.ui/KEY_CONFIGURATION_ID=myScheme
plugin.xml中的命令部分
<command
defaultHandler="com.cisco.nm.workflowbuilder.language.javascripteditor.XJSFormatAction"
id="com.language.javascripteditor.XJSFormatAction"
name="%action.label.format.xjs">
</command>
我写了一个Action
类而不是处理程序。如果这种方法不起作用,请告诉我
答案 0 :(得分:0)
1.为现有编辑器的扩展添加了贡献者类。 2.Created命令,格式为..eg:com.javascript.text.format 3.with格式方法的Action类
@Override
public void run() {
this.doOperation(ISourceViewer.FORMAT);
}
4。插件xml条目
<key
commandId="com.javascript.text.format"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="M1+M2+F"/>
5。覆盖createActions()。在此方法中实例化Action类和setActionDefinitionId。