如何使用插件放大eclipse java编辑器功能?

时间:2011-02-16 14:47:40

标签: java math ide eclipse-plugin expression

希望有人可以帮助我,给出一个暗示和出路。 现在我参与了一个雄心勃勃的项目,试图创建混合​​数学和编程IDE。 经过大量的预研究,我们决定使用eclipse作为基础,并以某种方式添加Mathematica,枫木功能。 一般来说,我们希望将数学表达式(a = sin(Pi)+ 10 ^ 2)输入到java代码中。这些表达式也应该在LaTex视图中显示,在代码中使工程师更具可读性,以说明我们想要在注释中实现插入图像的代码。 因为我们需要所有的java编辑器功能,在我看来,使用标准的eclipse java编辑器是正确的,并且学会它与其他对象一起运行,例如: G。图像。

所以我的问题是: - 有人可以分享开发类似产品的经验吗? - 可能有类似我们要开发的东西吗?

可能我会写更多问题,特别是更严格的问题。

4 个答案:

答案 0 :(得分:3)

这当然是一个有趣的声音项目。正如Gilbert Le Blanc所提到的,Java编辑器经过高度优化,可以编辑Java代码,并不是可扩展的。

话虽如此,我可以推荐两个选项(一个按规则播放,另一个违背规则)。

  1. 您可以通过org.eclipse.jdt.ui.JavaEditorTextHovers扩展点(因为它可以像JavaDoc悬停一样)或者在单独的视图中实现您自己的悬停,而不是直接在Java编辑器中嵌入您的图像。坐在编辑器旁边(因此它可以像JavaDoc视图一样工作)。 (这是遵守规则的。)
  2. 不久前,我实现了一个原型编辑器,允许您使用嵌入其中的CAL(功能性JVM语言)片段编辑Java代码。这些片段存储在编辑器内部的小窗口中。这是一个原型,并不是一切顺利,它也使用Eclipse 3.2,但这正是你想要做的事情。编译和运行代码并不容易,但你可以看一下......好吧,也许吧。我必须找到源代码的EPL变体。在那之前,只是意识到像这样攻击Java编辑器需要一些关于JDT的专业知识,你需要小心你如何做到这一点,这样你就会无意中破坏其他东西。

  3. 修改

    这是我描述的项目的拉链。它不会按原样编译,但您可以查看源代码:

    试试this link。它应该是世界可以看到的。

    要实现的基本要素是swt StyledText小部件本身可以包含其他小部件。该项目利用了Java编辑器中的功能。

    特别是,查看类org.openquark.cal.eclipse.embedded.containing.ContainingEditor,它是CompilaitonUnitEditor的子类。这个特殊的类在另一个编辑器(包含编辑器)中嵌入了第二个文本编辑器(包含的编辑器)。

    另外,请查看org.openquark.cal.eclipse.embedded.containing.ControlManager。此类管理包含CompilationUnitEditor的样式文本内的不同控件。

    这个项目的作用是创建一个类似Java的编辑器,并允许用户在Java编辑器中嵌入另一种语言的编辑器。这些编辑器实际上是由包含Java编辑器中的文本支持的,但文本由包含的编辑器覆盖。

    包含的编辑器在文本输入包含编辑器时上下移动。此外,您可以使用键盘在包含的编辑器中获得/失去焦点。

    自从我查看此代码已经有好几年了,但如果您有任何疑问,请给我留言或添加此问题。

答案 1 :(得分:0)

Eclipse Java编辑器由数百个Java类组成。在数百个Java类中有一个隐含的假设,即编辑器视图仅用于代码。

在我看来,你会发现为数学图像开发Mathematica类型的编辑器要容易得多,而单独留下Java编辑器。您的工程师可以在Eclipse中打开两个编辑器。

如果我的评论没有劝阻你,这里是Eclipse Helios的Eclipse documentation,也称为Eclipse 3.6

您开始使用的部分称为JDT Plug-in Developer Guide。

当我输入时,Eclipse网站响应缓慢。您还可以从Eclipse Helios内部访问帮助。

Help -> Help Contents

答案 2 :(得分:0)

我确切知道你能做些什么。首先,您可以打开unicode字符集。这将允许您拥有诸如希腊语之类的变量,这使得代码更具可读性。 [General-> WorkSpace-> Text Encoding = UTF-8]。

// Apply spring soft constraint using Erin Catto's method with Semi-Implicit Euler :
// Figure out (ω,ζ) from node sizes, then k=mEff.ω², c=2.mEff.ω.ζ 
double ω = 2.0*π*f;         // ω (angular frequency) 
double k = meff * ω*ω;      // spring stiffness 
double ζ = (b1.ζ + b2.ζ)/2;         // Average out the damping coefficients
double d = 2.0 * meff * ω * ζ;  // damping coefficient
double γ=h*(d+h*k);             // CFM (Constraint Force Mixing)

其次,您建议在代码中看到LaTeX公式也是下一个最好的选择。我知道这是可能的,因为我3年前写过一篇,但我无法在任何地方找到代码。我把它发布在eclipse插件的论坛上,但它现在已经消失了。 好消息是我再次写它,因为我需要它 - 这就是我找到你的帖子的方式。这次我使用的jlatexmath比我上次使用的更好。 我的想法是,您可以在评论中嵌入一个公式作为LaTeX,当您将鼠标悬停在工具提示上时,插件会将LaTeX呈现在工具提示中。

当我完成后,我会在这里发布一个链接或代码。大部分工作都在弄清楚如何让eclipse接受新的悬停控件。 J.D。

答案 3 :(得分:0)

好的,作为我上面帖子的后续内容,这里是我为此开发的Eclipse插件开发环境(PDE)项目。该插件名为LaTeXHover,只要您将鼠标悬停在包含LaTeX的注释行顶部,就会弹出工具提示,如:

// $ latex i \ hbar \ frac {\ partial} {\ partial t} \ left | \ Psi(t)\ right> = H \ left | \ Psi(t)\ right> $ // $ latex x = \ frac {-b \ pm \ sqrt {b ^ 2-4ac}} {2a} $

LaTeX必须使用$ latex和$分隔,不需要额外的空格。 它使用jlatexmath进行渲染。

我将尝试更好地打包插件并将其添加到Git repo中,并可能将其贡献给其中一个Eclipse Plug-In项目。就像上次一样,我现在没时间做这件事,但至少现在已经有了。任何希望从这里继续该项目的人都欢迎这样做。 J.D。

git://github.com/jdbertron/latexhover.git