From: <k_s...@us...> - 2008-08-02 18:48:05
|
Revision: 13152 http://jedit.svn.sourceforge.net/jedit/?rev=13152&view=rev Author: k_satoda Date: 2008-08-02 18:48:00 +0000 (Sat, 02 Aug 2008) Log Message: ----------- Restructured joinLines() to handle selections better and clearer. It was hard to find the intent of SF.net bug #1575505, in which Slava said "if the selection spans only one line, it should behave exactly as if nothing was selected". Modified Paths: -------------- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java Modified: jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2008-08-02 16:47:30 UTC (rev 13151) +++ jEdit/trunk/org/gjt/sp/jedit/textarea/TextArea.java 2008-08-02 18:48:00 UTC (rev 13152) @@ -4540,7 +4540,8 @@ //{{{ joinLines() method /** - * Joins the current and the next line. + * Joins the current and the next line, or joins all lines in + * selections. * @since jEdit 2.7pre2 */ public void joinLines() @@ -4551,45 +4552,41 @@ return; } - if (getSelectionCount() == 0) + try { - int end = getLineEndOffset(caretLine); - - // Nothing to do if the caret is on the last line. - if(end > buffer.getLength()) + buffer.beginCompoundEdit(); + boolean doneForSelection = false; + for (Selection selection: selectionManager.getSelection()) { - getToolkit().beep(); - return; + while (selection.startLine < selection.endLine) + { + joinLineAt(selection.startLine); + doneForSelection = true; + } } - - try + // If nothing selected or all selections span only + // one line, join the line at the caret. + if (!doneForSelection) { - buffer.beginCompoundEdit(); - joinLine(caretLine); - } - finally - { - buffer.endCompoundEdit(); - } - setCaretPosition(end - 1); - } - else - { - try - { - buffer.beginCompoundEdit(); - Selection[] selections = selectionManager.getSelection(); - for (int i = 0; i < selections.length; i++) + int end = getLineEndOffset(caretLine); + + // Nothing to do if the caret is on the last line. + if (end > buffer.getLength()) { - Selection selection = selections[i]; - joinLines(selection); + getToolkit().beep(); + return; } + + joinLineAt(caretLine); + if(!multi) + selectNone(); + moveCaretPosition(end - 1); } - finally - { - buffer.endCompoundEdit(); - } } + finally + { + buffer.endCompoundEdit(); + } } //}}} //}}} @@ -6001,28 +5998,12 @@ } } //}}} - //{{{ joinLines() method - /** - * Join the lines in the selection. - * If you use this method you have to lock the buffer in compound edit mode - * - * @param selection the selection - * @since jEdit 4.3pre8 - */ - private void joinLines(Selection selection) - { - do - { - joinLine(selection.startLine); - } - while (selection.startLine < selection.endLine); - } //}}} - //{{{ joinLine() method /** * Join a line with the next line. + * If you use this method you have to lock the buffer in compound edit mode. */ - private void joinLine(int line) + private void joinLineAt(int line) { if (line >= buffer.getLineCount() - 1) return; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |