home *** CD-ROM | disk | FTP | other *** search
- !!Script
- // Copyright ⌐ 1997-1998 - Modelworks Software
- // @Modified build 225 cm19981007 - pulled the Align function out of the DoCommand function
-
- /**
- @Tool: alignBraces~moves '{' to next line if needed to
- make '{' align with the '}'. Can be used on any file type.
- @EndTool:
- @Summary: alignBraces~align braces
- */
-
- function DoCommand()
- {
- var editor = getActiveEditor();
- if (editor == null)
- {
- return;
- }
- Align(editor);
- editor.setActive("Align Braces");
- }
-
- function GetOpenInsert(editor, lineIndex)
- {
- var tabs = "\n";
- var indentLevel = editor.getSmartIndentLevel(lineIndex);
- while (indentLevel-- > 0)
- {
- tabs += "\t";
- }
- return tabs;
- }
-
- function GetCloseInsert(editor, lineIndex)
- {
- var tabs = "\n";
- var indentLevel = editor.getSmartIndentLevel(lineIndex);
- while (indentLevel-- > 1)
- {
- tabs += "\t";
- }
- return tabs;
- }
-
- // cm19981007
- function Align(editor)
- {
- var bracesToMove = newList();
- var delimiterList = editor.findNextDelimiters("{", "}", 0, 0);
- while (delimiterList)
- {
- var position = delimiterList.getHeadPosition();
- while (position && position.valid)
- {
- var delimiterRange = delimiterList.getNext(position);
- if (delimiterRange)
- {
- if (delimiterRange && delimiterRange.endLineIndex > delimiterRange.startLineIndex
- && (delimiterRange.endCharIndex - delimiterRange.startCharIndex) != 1)
- {
- // only move the '{' to the next line if needed
- bracesToMove.addTail(delimiterRange);
- }
- }
- }
-
- var delimiterRange = delimiterList.getHead();
- if (delimiterRange && delimiterRange.endLineIndex > delimiterRange.startLineIndex)
- {
- delimiterList = editor.findNextDelimiters("{", "}", delimiterRange.endLineIndex + 1, 0);
- }
- else
- {
- delimiterList = null;
- }
- }
-
- var position = bracesToMove.getTailPosition();
- while (position && position.valid)
- {
- var delimiterRange = bracesToMove.getPrevious(position);
- var line = editor.copy(delimiterRange.startLineIndex);
- var result = searchInString(line, "[^ \t{]");
- if (result && result.value < delimiterRange.startCharIndex)
- {
- var insert = GetOpenInsert(editor, delimiterRange.startLineIndex);
- editor.replace(insert, delimiterRange.startLineIndex,
- delimiterRange.startCharIndex, delimiterRange.startLineIndex,
- delimiterRange.startCharIndex);
- }
- }
- }
-
-
- !!/Script
-
-