jEdit宏使其像GroovyConsole一样,jeditgroovyconsole,buffer.setMo
分享于 点击 23626 次 点评:133
jEdit宏使其像GroovyConsole一样,jeditgroovyconsole,buffer.setMo
buffer.setMode("groovy");buffers = jEdit.getBuffers();for(i = 0; i < buffers.length; i++) { gsh = buffers[i].getProperty("GroovyShell"); if(gsh != null) { break; }}if(gsh == null) { libfiles = new File(System.getenv("GROOVY_HOME") + "/lib/").listFiles(); urls = new URL[libfiles.length]; for(i = 0; i < libfiles.length; i++) { urls[i] = new URL("jar:" + libfiles[i].toURL().toString() + "!/"); } groovycl = new java.net.URLClassLoader(urls, this.getClass().getClassLoader()); gshClass = groovycl.loadClass("groovy.lang.GroovyShell"); gsh = gshClass.getConstructor(new Class[] {java.lang.ClassLoader.class}).newInstance(new Object[] {groovycl});}for(i = 0; i < buffers.length; i++) { buffers[i].setProperty("GroovyShell", gsh);}outbuffer = buffer.getProperty("outbuffer");if((outbuffer == null) || outbuffer.isClosed()) { outbuffer = jEdit.newFile(view); buffer.setProperty("outbuffer", outbuffer);}out = new java.io.StringWriter();gsh.setProperty("out", out);String text() { view.showBuffer(buffer); res = textArea.getSelectedText(); if(res == null || res.length() == 0) { res = buffer.getText(); } return res;}String cwd = System.getProperty("user.dir");System.setProperty("user.dir", buffer.getDirectory());result = gsh.evaluate(text());System.setProperty("user.dir", cwd);outbuffer.remove(0, outbuffer.getLength());outbuffer.insert(0, out.toString());outbuffer.insert(outbuffer.getLength(),"\n\tResult: " + result);if(result != null) { view.showBuffer(outbuffer);}
用户点评