如何在不丢失功能的情况下将另一个 EditorActionHandler 添加到单个 IdeAction?

How can I add another EditorActionHandler to a single IdeAction without losing functionality?

我有一个插件,我想在用户触发 BACKSPACEDELETE 键时添加额外的功能,而不会丢失初始功能(在本例中为字符删除)。

我正在尝试覆盖指定 ideActions.<ACTION_EDITOR_VALUE>EditorActionHandler:

public class MyPlugin implements BaseComponent {

@Override
public void initializeComponent() {

    final EditorActionManager editorActionManager = EditorActionManager.getInstance();
    EditorActionHandler originalBackspaceHandler = editorActionManager.getActionHandler(IdeActions.ACTION_EDITOR_BACKSPACE);

    EditorActionHandler eaHandler = new EditorActionHandler() {
        @Override
        protected void doExecute(@NotNull Editor editor, @Nullable Caret caret, DataContext dataContext) {
            super.doExecute(editor, caret, dataContext);

            originalBackspaceHandler.execute(editor,caret,dataContext);

            PsiElement e = dataContext.getData(CommonDataKeys.PSI_ELEMENT);
            if(e != null) {
                System.out.println("psi Element" + e.toString());
            }
        }

    };        
  editorActionManager.setActionHandler(IdeActions.ACTION_EDITOR_DELETE,  eaHandler);   

} //initalizeComponent()   
} //MyPlugin

这是在保持当前功能的同时覆盖 editorAction 处理程序的首选方式吗?我想针对其他 IdeActions.<VALUES> 并重复使用相同的 EditorActionHandler

没有覆盖操作处理程序的通用方法。您的方法是其中一种可能性。

例如Heresmart step into 处理程序的代码,用于 "right arrow"、"left arrow" 等。使用类似的方法。