Я пытаюсь ввести комбинацию клавиш ( Ctrl + Shift + f ) в нашем настраиваемом редакторе для форматирования содержимого.
Я реализовал следующие изменения.
Добавлены изменения в плагин xml путем добавления расширения ключа с определением Id / schema / context.
Реализовано действие путем расширения класса TextEditorAction, как показано ниже.
@Override
public void run() {
this.doOperation(ISourceViewer.FORMAT);
}
Реализован один класс Formatter путем реализации IContentFormatter
.
Передал вышеуказанный класс Formatter в наш класс sourceVIewConfiguration
(extends SourceViewerConfiguration
), переопределив getContentFormatter
.
переопределенный createActions()
API внутри нашего настраиваемого класса редактора, который расширяет TextEditor
.
По какой-то причине моя клавиша быстрого доступа не работает. Я поместил точку отладки в свой класс действий и заметил, что контроллер не будет там, когда я нажму на клавишу быстрого доступа.
Я также заметил, что вновь созданный ключ не отображается в настройках -> список ключей.
Может кто-нибудь предоставить указатели или пример для решения проблемы.
записей plugin.xml:
<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
класс. Пожалуйста, дайте мне знать, если этот подход не работает