/jEdit/branches/ci_release_test/4-4-pre1/macros/Editing/Greedy_Right.bsh
# · Unknown · 86 lines · 79 code · 7 blank · 0 comment · 0 complexity · 31b07e0d1729a88639545397fe5f6e9e MD5 · raw file
- /*
- * Greedy_Right.bsh - If a buffer is using soft tabs,
- * this macro will move the caret tabSize spaces to the right,
- * if all the characters between the caret and the next
- * tab stop are all spaces. In all other cases, the caret
- * is moved a single character to the right.
- *
- * Copyright (C) 2004 Ollie Rutherfurd <oliver@jedit.org>
- *
- * $Id: Greedy_Right.bsh 5230 2005-07-20 13:31:08Z orutherfurd $
- */
- /**
- * @param onlyFullTabs if true, the caret will only be moved
- * multiple spaces it would constitute
- * a 'complete' tab.
- */
- void greedyRight(View view, boolean onlyFullTabs)
- {
- JEditTextArea textArea = view.getTextArea();
- JEditBuffer buffer = textArea.getBuffer();
- int caret = textArea.getCaretPosition();
- int caretLine = textArea.getCaretLine();
- int lineStart = textArea.getLineStartOffset(caretLine);
- int lineEnd = textArea.getLineEndOffset(caretLine);
- if(textArea.getCaretPosition() == buffer.getLength())
- return;
- if(buffer.getBooleanProperty("noTabs") == true)
- {
- // if anything is selected, use standard
- if(textArea.getSelection().length != 0)
- {
- textArea.setCaretPosition(caret+1);
- }
- // if at the end of the line, go to the
- // start of the next line (+1 for \n)
- else if(caret+1 >= lineEnd)
- {
- textArea.setCaretPosition(caret+1);
- }
- else
- {
- int col = caret - lineStart;
- int tabSize = buffer.getIntegerProperty("tabSize",8);
- // unlikely, but just in case
- if(tabSize <= 0)
- {
- textArea.setCaretPosition(caret+11);
- }
- else
- {
- int toTabStop = (((col+tabSize)-1) % tabSize) + 1;
- String chunk = "";
- if((caret + toTabStop) <= buffer.getLength())
- chunk = buffer.getText(caret,toTabStop);
- int count = 0;
- for(int i=0; i < chunk.length(); i++)
- {
- if(' ' != chunk.charAt(i))
- {
- break;
- }
- count += 1;
- }
- // if onlyFullTabs must be only spaces to
- // the tabStop and must have tabSize number
- // of spaces to remove them all.
- if(onlyFullTabs == false || count == tabSize){
- textArea.setCaretPosition(caret+count);
- }
- else{
- textArea.setCaretPosition(caret+1);
- }
- }
- }
- }
- else
- textArea.setCaretPosition(caret+1);
- }
- greedyRight(view,true);