mulgasoft / e4macs Goto Github PK
View Code? Open in Web Editor NEWSources to the Emacs+ plugin for Eclipse [e4 releases]
License: Eclipse Public License 1.0
Sources to the Emacs+ plugin for Eclipse [e4 releases]
License: Eclipse Public License 1.0
Win7, Kepler SR2, Emacs+ 4.1.2 (although Emacs+ Options 4.0.5).
I'm using the "Default" key binding scheme, and I've manually bound keys to the Emacs+ functions I use.
In my main Editor view, I'm viewing a Java unit test class, and there are 21 other tabs, although only 5 are visible (in addition to the one for the current class). Let's say that this is "FooTest.java".
I put my cursor on the type for a local variable, and I executed the key I have bound to "open-declaration-other-window". This split the editor view, putting the Java class containing the declaration for the reference in the bottom window ("Foo.java"), leaving the original "FooTest.java" class in the top window. The focus is in the bottom window.
This is fine so far.
I then execute the binding for "deactivate-window". The description of this function says "Deactivate (and join if previously split) window". I'm in the bottom window showing "Foo.java", so I expect this will remove the bottom window and restore viewing "FooTest.java" in the one remaining window.
This does remove the bottom window, but instead of now viewing "FooTest.java", I'm viewing "Foo.java", which was in the bottom window.
If I instead used "join-other-windows", the behavior is the same, although I believe this behavior is correct.
As I said, I'm not using the Emacs+ bindings. I'll do another test of this with a separate installation using the Emacs+ bindings.
I have Emacs+ installed on both a Win7 box with Luna, and a Linux box with Mars. Otherwise, the Eclipse settings are identical. The other thing that is identical is that I have mapped (in some way) the CapsLock key to be an additional Control key. This is done on Windows with SysInternals Ctrl2Cap, and on Linux with TweakTool.
I have numerous bindings that have a prefix using at least the Ctrl key, which I press using the CapsLock key. These bindings all work fine (as far as I know) on both platforms. On the Win7 box, if I execute the "describe-key" function (whether manually or by binding) and then press one of those bindings, using the CapsLock key as the Ctrl key, it detects the proper key sequence and tells me what the binding is.
However, if I do the same thing on the Linux box, as soon as I touch the CapsLock key, it immediately responds with "CapsLock is unbound". And again, the bindings are still there, and work, but "describe-key" is confused.
As of platform 4.13, according to https://www.eclipse.org/eclipse/news/4.13/platform_isv.php#javax-injext (yes, the anchor name is misspelled, but that's it), the javax.inject package is now not automatically exported, so the classes that import classes in that package (Inject class) are getting compile errors. The fix is to add the following to the MANIFEST.MF file:
Import-Package: javax.inject;version="1.0.0"
I fixed this in my fork: https://github.com/davidmichaelkarr/e4macs .
So I had an RCP Eclipse Photon installation. I cloned e4macs and tried to follow the build instructions. I immediately saw that the following line in KeyHandlerMinibuffer.checkKey is getting a compile error:
trigger = KeySequence.getInstance(keys);
keys is a List. I see that in the version of KeySequence that I see, there is a "getInstance" method that takes a KeyStroke[], and KeyStroke extends Trigger, so it appears that this simply requires doing this:
trigger = KeySequence.getInstance(keys.toArray(new KeyStroke[0]));
I don't know anything about the version changes that would have occurred since this was last built, or whether fixing this compile error will really fix anything. At least this change fixes the compile error.
Hi Mark,
I this code still under active development/maintenance?
I installed all 4 Emacs+ plugins in my Eclipse Oxygen disto, including the Mac Command and Optional Mac Command plugins.
I tried to remap Format to Command+Shift+F and Save to Command+S but neither of the commands would work.
I can use "Meta-x format" to format code, but I could not get Command+Shift-F to work.
I remapped all instances of Format I could find in the preferences - Keys panel.
When using the default key mapping, I get a Format command that applies to Java source code, but the command is not there when using Emacs+ keybindings.
Similarly for the Save command. I can use Ctrl-x-s to save, but Command+S would not work.
I also tried to map Command+3 back to Quick Access but that did not work either.
Without the mac command key plugin, I can get the default Eclipse shortcuts using command to work as expected when using Emacs+ keybindings.
But in the actual emacs editor, I also use the command key as meta, and want the same behavior in Eclipse.
There are just a small set of original/default Eclipse shortcuts that I like, and would like to keep, like, for example, the Format code, save, Quick Access.
Any suggestions on how to get these shortcuts to work with Emacs+ keybindings.
Thanks,
Marcel,
The whole sub-series of C-x 2 commands does not function 3.4+. This is a result of the entire Eclipse interface being reworked and constitutes a known issue.
The publicly available HandySplit plugin, code available on GitHub at https://github.com/akikhtenko/HandySplit seems to mostly perform the operations. It might be worth looking in to it for a rewrite.
User drorbrill reports that the bug occurs when execution of "start(BundleContext)" function occurs in a non-UI thread during plugin activation (EmacsPlusActivator). I have not been able to recreate this, but since the fix should be harmless in the usual case, and given Eclipse's twisted nature, I have little doubt that it can occur when the conditions are right.
In some cases getting clipboard content can take a very long time (nothing to do with Emacs+ plugin).
Because the Kill ring feature in Emacs+ reads clipboard content even when the user did not activate a "paste" command, sometimes it can cause long freezes (see example below), even though the user did not attempt to use the "paste" command.
Is there a way to disable the Kill ring feature entirely?
Is there a way to reduce or avoid getting clipboard content unless the user actively wants to get content from it?
!ENTRY org.eclipse.ui.monitoring 4 0 2022-08-02 09:04:57.850
!MESSAGE UI freeze of 111s at 09:03:06.469
!SUBENTRY 1 org.eclipse.ui.monitoring 1 0 2022-08-02 09:04:57.850
!MESSAGE Sample at 09:04:28.908 (+82.439s)
Thread 'main' tid=1 (RUNNABLE)
!STACK 0
Stack Trace
at org.eclipse.swt.internal.gtk3.GTK3.gtk_clipboard_wait_for_contents(Native Method)
at org.eclipse.swt.dnd.Clipboard.gtk_clipboard_wait_for_contents(Clipboard.java:622)
at org.eclipse.swt.dnd.Clipboard.getContents(Clipboard.java:297)
at com.mulgasoft.emacsplus.KillRing.getClipboardText(KillRing.java:323)
at com.mulgasoft.emacsplus.KillRing.checkClipboard(KillRing.java:297)
at com.mulgasoft.emacsplus.KillRingListeners$StaticActivation$1.windowActivated(KillRingListeners.java:67)
at org.eclipse.ui.internal.Workbench$8.run(Workbench.java:1005)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.ui.internal.Workbench.fireWindowActivated(Workbench.java:1002)
at org.eclipse.ui.internal.WorkbenchWindow$6.shellActivated(WorkbenchWindow.java:2459)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:92)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5895)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1515)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1541)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1520)
at org.eclipse.swt.widgets.Shell.gtk_focus_in_event(Shell.java:1596)
at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2406)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:6833)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6197)
at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
at org.eclipse.swt.widgets.Display.eventProc(Display.java:1565)
at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4578)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1154)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1045)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.ui.internal.Workbench$$Lambda$281/0x0000000800dbacd0.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
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:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at [email protected]/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
at app//org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at app//org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at app//org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at app//org.eclipse.equinox.launcher.Main.main(Main.java:1440)
Small remnant from the otherwise resolved issue of cursor movements not highlighting (i.e. OS-selecting) text. For all but the following your advice about which emacs command to use was the fix.
When moving cursor from mark to end of line (set-mark--->cnt-e) no selection of mark--point occurs. In gnu emacs that selection is made.
Andreas
OS info macOS Mojave (10.14.5)
Eclipse version and package:
Eclipse IDE for JavaScript and Web Developers
Version: 2019-12 (4.14.0)
Build id: 20191212-1212
java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
Editor: Python pydev
Description.
Moving cursor away from just-set mark does not highlight the evolving
region. I.e. does not select. For example:
cmd-space [set-mark]
cmd-p [previous-line]
Should highlight from mark to new point. Note that a region is being
defined. For example, cnt-x cnt-x [swap-mark] will toggle between
point and mark.
Also selecting is important, b/c other functions seem to depend on
it.
Example1: <tab> will indent a selected (highlighted) region to the right.
But if that region has no highlight, only the line at point
is indented.
Example2: comment-region comments a highlighted region, but not a
plain old region.
Example3: copy-to-register refuses to offer entry of a register
name (letter), and instead complains about "No text
selected"
M-,
is pop-tag-mark
in Emacs. If you've jumped to the definition of a function and you want to jump back to where you were before, you'd use M-,
.
It would be very useful to have some basic documentation on the plugin e.g. for building for local use.
Possibly sounds like a dumb question but I've been going through all the docs on eclipse marketplace, google groups and github but it's still not clear. I assume I can't use my own .emacs file, but could this be used as a feature request?
Hi Mark, on (likely any) Eclipse, trying to install emacs+ is no longer working:
Unable to read repository at https://sites.google.com/a/mulgasoft.com/www/emacsplus/e4/update-site.
https://sites.google.com/a/mulgasoft.com/www/emacsplus/e4/update-site is not a valid repository location.
Is there anything to be done to correct this? I continue to rely on emacs+.
Thank you for your help,
Andreas
It appears that the update site has gone away, and I think it's been gone for a while. I'm guessing I'll have to remember how to build this locally again. I did this 3 years ago, but I don't remember the process, and I can't find notes on how to do it.
I see that when I checkout the master branch in the "Eclipse for committers" distro, there is a compile error in com.mulgasoft.emacsplus.execute.SelectionDialog:
public SelectionDialog(Shell parent, ISelectExecute mini, ITextEditor editor) {
// Europa compatible constructor
super((Shell) null, PopupDialog.HOVER_SHELLSTYLE, false, false, false, false, null, null);
this.editor = editor;
this.minibuffer = mini;
}
Saying:
The constructor PopupDialog(Shell, int, boolean, boolean, boolean, boolean, null, null) is undefined
It's saying that this constructor takes five booleans, not four. I could just add an additional "false", but I'm not certain of the consequences of that, and I'm unsure of the implications of the fact that this even has a compile error.
Assuming I get past this properly, I'm not sure of the steps to build this and construct a local update site.
I noticed that the Emacs+ update site is gone, and the email address Mark used to answer also appears to be gone. Anyone know anything about this?
I just noticed that the latest release noted here in the Github project is v4.1.5, but when I check the version of Emacs+ in my Eclipse installation, it is v4.2.0. Does anyone know why that might be?
just updated to kepler and emacs+ 4.1.4. After open-declaration, pop-tag-mark, invoked either by M-* or by M-x pop-tag-mark seems to do nothing. Not sure where I should be looking for any kind of error output.
Eclipse does not properly override the keybinding for the Close command in the defaultAcceleratorConfiguration with the keybinding for Copy in the emacsAcceleratorConfiguration.
I know this isn't being maintained anymore, but I guess I'll log this, in case Mark gets inspired again, or someone capable takes this over.
After upgrading from 2019-06 to 2019-09 today, I'm finding that "split-window-{vertically,horizontally}" now do nothing. There's nothing in the log. They just don't do anything. The more primitive "Toggle Split Editor" commands do work, but as described, those are only toggles, so you can only split the window once.
I do have the code loaded into a project in an RCP instance, so I suppose I could step through it if I knew what to look for, but I sure don't.
many different commands simply don't work, the "Emacs+ Scheme" option does not show up in the keys scheme popup, etc...
is this project still maintained?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.