SelectionListener not working
Answered
Hi , I want to know what code is selected by user. Currently I use editorCreated
hook to register addSelectionListener
to listen to code selection changes (for some reason, i prefer listening to selection change to querying selection change). There is a situation where it doesnt work: if i install my plugin for the first time, my selection listener will not receive selection event from java files already opened before the time i install plugin because listener is not registered in editorCreated
, because editorCreated
is not invoked for already opened java files.
plugin.xml
<editorFactoryListener implementation="org.intellij.sdk.listener.EditorListener" />
EditorListener:
public class EditorListener implements EditorFactoryListener {
private final EditorSelectionListener selectionListener = new EditorSelectionListener();
public void editorCreated(@NotNull EditorFactoryEvent event) {
Editor editor = event.getEditor();
Project project = editor.getProject();
Disposable editorDisposable = Disposer.newDisposable("EditorListener");
EditorUtil.disposeWithEditor(editor, editorDisposable);
editor.getSelectionModel().addSelectionListener(this.selectionListener, editorDisposable);
}
}
Please sign in to leave a comment.
Hi,
Please try implementing
DynamicPluginListener.pluginLoaded()
and register listener in all opened editors(EditorFactory.getInstance().getAllEditors()
).