products/Sources/formale Sprachen/Isabelle/Tools/jEdit/dist/macros/Editing image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei:   Sprache: HTML

Untersuchungsergebnis.bsh Download desLatech {Latech[84] Abap[104] [0]}zum Wurzelverzeichnis wechseln

/*
 * Greedy_Left.bsh - If a buffer is using soft tabs,
 * this macro will move the caret tabSize spaces to the left,
 * if all the characters between the caret and the previous
 * tab stop are all spaces.  In all other cases, the caret
 * is moved a single character to the left.
 *
 * Copyright (C) 2004 Ollie Rutherfurd <[email protected]>
 *
 * $Id: Greedy_Left.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 greedyLeft(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);

 if(textArea.getCaretPosition() == 0)
  return;

 if(buffer.getBooleanProperty("noTabs") == true)
 {
  // if anything is selected, use standard 
  if(textArea.getSelection().length != 0)
  {
   textArea.setCaretPosition(caret-1);
  }
  // if at the start of the line, use standard
  else if(caret == lineStart)
  {
   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-1);
   }
   else
   {
    int toTabStop = ((col-1) % tabSize) + 1;
    int count = 0;
    String chunk = buffer.getText(caret-toTabStop,toTabStop);
    for(int i=0; i < toTabStop; 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);
}

greedyLeft(view,true);


[ Konzepte0.137Was zu einem Entwurf gehört  ]