Posted By

guai on 08/26/11


Tagged

groovy jedit


Versions (?)

jEdit macro that makes it just like GroovyConsole


 / Published in: Java
 

bind it to ctrl+enter and everything that GroovyConsole do jEdit will do too. Uses groovy installation.

  1. buffer.setMode("groovy");
  2. buffers = jEdit.getBuffers();
  3. for(i = 0; i < buffers.length; i++) {
  4. gsh = buffers[i].getProperty("GroovyShell");
  5. if(gsh != null) { break; }
  6. }
  7. if(gsh == null) {
  8. libfiles = new File(System.getenv("GROOVY_HOME") + "/lib/").listFiles();
  9. urls = new URL[libfiles.length];
  10. for(i = 0; i < libfiles.length; i++) {
  11. urls[i] = new URL("jar:" + libfiles[i].toURL().toString() + "!/");
  12. }
  13. groovycl = new java.net.URLClassLoader(urls, this.getClass().getClassLoader());
  14. gshClass = groovycl.loadClass("groovy.lang.GroovyShell");
  15. gsh = gshClass.getConstructor(new Class[] {java.lang.ClassLoader.class}).newInstance(new Object[] {groovycl});
  16. }
  17. for(i = 0; i < buffers.length; i++) {
  18. buffers[i].setProperty("GroovyShell", gsh);
  19. }
  20. outbuffer = buffer.getProperty("outbuffer");
  21. if((outbuffer == null) || outbuffer.isClosed()) {
  22. outbuffer = jEdit.newFile(view);
  23. buffer.setProperty("outbuffer", outbuffer);
  24. }
  25. out = new java.io.StringWriter();
  26. gsh.setProperty("out", out);
  27. String text() {
  28. view.showBuffer(buffer);
  29. res = textArea.getSelectedText();
  30. if(res == null || res.length() == 0) { res = buffer.getText(); }
  31. return res;
  32. }
  33. String cwd = System.getProperty("user.dir");
  34. System.setProperty("user.dir", buffer.getDirectory());
  35. result = gsh.evaluate(text());
  36. System.setProperty("user.dir", cwd);
  37. outbuffer.remove(0, outbuffer.getLength());
  38. outbuffer.insert(0, out.toString());
  39. outbuffer.insert(outbuffer.getLength(),"\n\tResult: " + result);
  40. if(result != null) {
  41. view.showBuffer(outbuffer);
  42. }

Report this snippet  

You need to login to post a comment.