// Toggle between view and controller String find_current_method(){ curpos= textArea.getCaretPosition(); txt= textArea.getText(); off= txt.lastIndexOf("def ", curpos); if(off != -1){ lo= textArea.getLineOfOffset(off); eol= textArea.getLineEndOffset(lo); p= txt.lastIndexOf("(", eol); if(p != -1 && p > off) eol= p-1; return txt.substring(off+4, eol).trim(); } return null; } String baseDir = buffer.getPath(); String name = buffer.getName(); if (baseDir != null) { if ((off=baseDir.lastIndexOf(File.separator+"views"+File.separator, baseDir.length())) != -1) { lastIndex = baseDir.lastIndexOf(File.separator, baseDir.length()); newname = baseDir.substring(off+7, lastIndex); baseDir = baseDir.substring(0, off); action = name.substring(0, name.length() - 6); openfile = new File(baseDir + File.separator + "controllers" + File.separator + newname + "_controller.rb"); if(openfile.exists()) { jEdit.openFile(view, baseDir + File.separator + "controllers" + File.separator + newname + "_controller.rb"); return true; } } else { lastIndex = baseDir.lastIndexOf(File.separator, baseDir.length()); baseDir = baseDir.substring(0, lastIndex-11); newname = name.substring(0, name.length() - 14); action= find_current_method(); if(action != null){ fn= baseDir + File.separator + "views" + File.separator + newname + File.separator + action + ".rhtml"; openfile = new File(fn); if(openfile.exists()){ jEdit.openFile(view, fn); return true; } } } }