Emacs keybindings stop working soon after started editing a file
jonasseglare opened this issue · 3 comments
Description of problem
I have a fresh Eclipse installation to which I added the Corrosion plugin from https://download.eclipse.org/corrosion/releases/latest/. Soon after I start editing a Rust file and it starts to autocomplete and assist me while editing, common keybindings stop working, such as Ctrl + A
(go to beginning of line), Ctrl + N
(go to next line) etc. I use the Emacs keybindings scheme that I chose in the drop-down menu under Window -> Preferences -> General -> Keys
.
How to reproduce
- I installed
rust
usingrustup
. - I use Ubuntu 22.04
- I downloaded and unpacked Eclipse IDE for Java developers and unpacked it under
~/uppackat/eclipse-rust
. - I launched it and chose to use
~/eclipse-rust-workspace
as my workspace. - I added the Corrosion plugin from the url https://download.eclipse.org/corrosion/releases/latest/.
- I chose the Emacs keybindings scheme at
Window -> Preferences -> General -> Keys
- I started a new cargo project under
~/prog/rust/blueprint
. - I started editing the file
~/src/main.rs
by adding a functionfn gcd(mut n: u64, mut m: u64) -> u64 {let a = 4;}
but very soon as I was typing and the Corrosion plugin started assisting me, the Emacs bindings such as those to move the cursor (Ctrl + n
,Ctrl + p
,Ctrl + f
andCtrl + b
) stopped working. - I observed that whenever I typed an Emacs binding that wasn't working, an error appeared in the
Error Log
(open it fromWindow -> Show view -> Error Log
). See below for details about the error.
Details from Error Log
Here are details from the error that appears in the Error Log when I type an Emacs key command that isn't working.
Details:
Plugin: org.eclipse.ui
Severity: Error
Message: Unhandled event loop exception
Exception Stack Trace:
java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.widgets.Table.isDisposed()" because "this.this$0.fProposalTable" is null
at org.eclipse.jface.text.contentassist.CompletionProposalPopup$ProposalSelectionHandler.execute(CompletionProposalPopup.java:146)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:580)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:647)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1953)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1528)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1555)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1538)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1577)
at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:937)
at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:4013)
at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:921)
at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2507)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:6834)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6163)
at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
at org.eclipse.swt.widgets.Display.eventProc(Display.java:1597)
at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4514)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
Session data:
eclipse.buildId=4.26.0.20221201-1200
java.version=17.0.5
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -data file:/home/jonas/eclipse-rust-workspace/ -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.java.product
Thanks for this report.
I suspect an earlier error has incorrectly closed the content-assist session and some handlers are left active while they should not and then keeps erroneously capturing some keybinding events. Can you please check the whole log file, maybe there is something hinting about a possible root cause?
@mickaelistria I can attach the log file. The first occurrence of the kind of log entry that I referred to in my initial message starts with
!ENTRY org.eclipse.ui 4 0 2023-01-02 17:29:14.508
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.widgets.Table.isDisposed()" because "this.this$0.fProposalTable" is null
in the attached log file. To clarify, the Emacs keybindings do work before I start typing code. It is just once the autocomplete and code assistance kicks in that it stops working.
I tried to reproduce the problem again around 2023-01-02 21:50
and still have the same problem, that the key bindings stop working when I try to type code. But now, for some reason, no error log entries are produced as I try to type emacs commands to move the cursor, etc.
I confirm I can reproduce the issue (lost some Emacs shortcuts) with the IDE from https://download.eclipse.org/corrosion/releases/latest/products/ ; however, I do not see the same stack trace in the log.