From: Robert M. <rob...@us...> - 2005-10-29 19:07:27
|
Update of /cvsroot/jedit/plugins/RubyPlugin/src/org/jedit/ruby/structure In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22196/org/jedit/ruby/structure Modified Files: AutoIndentAndInsertEnd.java MemberNode.java ProgressiveSelector.java RubySideKickParser.java Log Message: changed code to use new jruby parser; fixed various parsing problems Index: ProgressiveSelector.java =================================================================== RCS file: /cvsroot/jedit/plugins/RubyPlugin/src/org/jedit/ruby/structure/ProgressiveSelector.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ProgressiveSelector.java 12 Oct 2005 07:31:06 -0000 1.2 +++ ProgressiveSelector.java 29 Oct 2005 19:07:19 -0000 1.3 @@ -306,10 +306,15 @@ private static boolean needToSelectMore(JEditTextArea textArea, Selection originalSelection, boolean defaultNeed) { if (originalSelection != null && !defaultNeed) { - Selection selection = textArea.getSelection()[0]; - int start = originalSelection.getStart(); - int end = originalSelection.getEnd(); - return selection.getStart() >= start && selection.getEnd() <= end; + Selection[] selections = textArea.getSelection(); + if (selections == null || selections.length == 0) { + return true; + } else { + Selection selection = selections[0]; + int start = originalSelection.getStart(); + int end = originalSelection.getEnd(); + return selection.getStart() >= start && selection.getEnd() <= end; + } } else { return defaultNeed; } Index: AutoIndentAndInsertEnd.java =================================================================== RCS file: /cvsroot/jedit/plugins/RubyPlugin/src/org/jedit/ruby/structure/AutoIndentAndInsertEnd.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- AutoIndentAndInsertEnd.java 12 Oct 2005 07:31:06 -0000 1.7 +++ AutoIndentAndInsertEnd.java 29 Oct 2005 19:07:19 -0000 1.8 @@ -109,6 +109,11 @@ } else if (trimLine.startsWith("else") || trimLine.startsWith("elsif")) { handleElse(trimLine, row); } else { +// String text = area.getText(); +// int offset = area.getCaretPosition(); +// if (text.indexOf('\n', offset) == text.lastIndexOf('\n', offset)) { +// area.setText(text + '\n'); +// } handleInsertEnter(trimLine, row, line); } } @@ -147,18 +152,6 @@ } } - private String adjustForIfBracket(String line) { - int ifBracket = line.indexOf("if("); - if (ifBracket != -1) { - int endBracket = line.indexOf(")"); - if (endBracket != -1) { - String suffix = endBracket == (line.length() -1) ? "" : line.substring(endBracket + 1); - line = line.substring(0, ifBracket) + "if " + line.substring(ifBracket+3, endBracket) + " " + suffix; - } - } - return line; - } - private void handleElse(String trimLine, int row) { area.insertEnterAndIndent(); @@ -303,13 +296,7 @@ area.deleteLine(); } - int caretLine = area.getCaretLine() + 1; - int lineCount = area.getLineCount(); - RubyPlugin.log(caretLine + " " + lineCount, getClass()); - if (caretLine != lineCount) { - area.goToPrevLine(false); - } - + area.goToPrevLine(false); area.goToEndOfWhiteSpace(false); area.insertEnterAndIndent(); area.selectLine(); @@ -455,16 +442,16 @@ /** * matches other syntax that requires end */ - private static final class MatchRegExp extends IndentRegularExpression { - private static final RegularExpression instance = new MatchRegExp(); - protected final String getPattern() { - String indent = "(\\s*)"; - String leadingText = "([^#]*)"; - String trailingSpace = "\\s*"; + public static final class MatchRegExp extends IndentRegularExpression { + public static final RegularExpression instance = new MatchRegExp(); + private static final String indent = "(\\s*)"; + private static final String leadingText = "([^#]*)"; + private static final String trailingSpace = "\\s*"; + protected final String getPattern() { return indent + leadingText + "(" - + "((if|for|while|until|unless|def|case|class|module)(\\s+\\S+)+)" + + "((if|for|while|until|unless|def|case|class|module)((?:\\s|\\()\\s*\\S+)+)" + "|" + "(begin|loop[ ]do|do)" + ")" + trailingSpace; Index: MemberNode.java =================================================================== RCS file: /cvsroot/jedit/plugins/RubyPlugin/src/org/jedit/ruby/structure/MemberNode.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- MemberNode.java 12 Oct 2005 07:31:06 -0000 1.2 +++ MemberNode.java 29 Oct 2005 19:07:19 -0000 1.3 @@ -35,7 +35,7 @@ private final Icon icon; public MemberNode(Member member) { - super(member.getName()); + super(member.getCompositeName()); MemberIcon memberIcon = new MemberIcon(member); icon = memberIcon.getIcon(); } Index: RubySideKickParser.java =================================================================== RCS file: /cvsroot/jedit/plugins/RubyPlugin/src/org/jedit/ruby/structure/RubySideKickParser.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- RubySideKickParser.java 12 Oct 2005 07:31:06 -0000 1.8 +++ RubySideKickParser.java 29 Oct 2005 19:07:19 -0000 1.9 @@ -25,7 +25,7 @@ import org.gjt.sp.jedit.Buffer; import org.gjt.sp.jedit.EditPane; import org.gjt.sp.jedit.syntax.Token; -import org.jruby.lexer.yacc.SourcePosition; +import org.jruby.lexer.yacc.ISourcePosition; import org.jedit.ruby.ast.Member; import org.jedit.ruby.parser.RubyParser; import org.jedit.ruby.ast.RubyMembers; @@ -134,16 +134,16 @@ } } - private void addWarning(String message, SourcePosition position, DefaultErrorSource errorSource) { + private void addWarning(String message, ISourcePosition position, DefaultErrorSource errorSource) { addToErrorList(ErrorSource.WARNING, position, errorSource, message); } - private void addError(String message, SourcePosition position, DefaultErrorSource errorSource) { + private void addError(String message, ISourcePosition position, DefaultErrorSource errorSource) { addToErrorList(ErrorSource.ERROR, position, errorSource, message); } - private void addToErrorList(int type, SourcePosition position, DefaultErrorSource errorSource, String message) { - int line = position == null ? 0 : position.getLine() - 1; + private void addToErrorList(int type, ISourcePosition position, DefaultErrorSource errorSource, String message) { + int line = position == null ? 0 : position.getEndLine(); String file = position == null ? null : position.getFile(); int startOffset = RubyPlugin.getStartOffset(line); @@ -181,7 +181,11 @@ this.errorSource = errorSource; } - public final void warn(SourcePosition position, String message) { + public boolean isVerbose() { + return false; + } + + public final void warn(ISourcePosition position, String message) { addWarning(message, position, errorSource); } @@ -189,7 +193,7 @@ addWarning(message, null, errorSource); } - public final void warning(SourcePosition position, String message) { + public final void warning(ISourcePosition position, String message) { addWarning(message, position, errorSource); } @@ -197,7 +201,7 @@ addWarning(message, null, errorSource); } - public final void error(SourcePosition position, String message) { + public final void error(ISourcePosition position, String message) { addError(message, position, errorSource); } |