def _indentSelection(self, selection): startMarker = selection.getStartMarker() endMarker = selection.getEndMarker() # Get the statements that contain the start and end markers startContext = getStatementContextFromElement(startMarker.getElement()) endContext = getStatementContextFromElement(endMarker.getElement()) # Get the statement elements startStmtElement = startContext.getFragmentContentElement() endStmtElement = endContext.getFragmentContentElement() # Get paths to start and end nodes, from the common root statement path0, path1 = getStatementContextPathsFromCommonRoot( startContext, endContext) root = path0[0] # Get the content element, not the fragment itself, otherwise editing operations that involve the module (top level) will trigger events that will NOT be caught rootElement = root.getFragmentContentElement() event = IndentPythonSelectionTreeEvent(self, rootElement) visitor = event.getRichStringVisitor() visitor.ignoreElementFixedValuesOnPath( startContext.getFragmentContentElement(), rootElement) visitor.ignoreElementFixedValuesOnPath( endContext.getFragmentContentElement(), rootElement) visitor.setElementPrefix(startStmtElement, Schema.Indent()) visitor.setElementSuffix(endStmtElement, Schema.Dedent()) bSuccess = root.getFragmentContentElement().postTreeEvent(event) if not bSuccess: print 'PythonSyntaxRecognizingController._indentSelection(): INDENT SELECTION FAILED'
def _indentLine(self, element, fragment, node): event = PythonIndentTreeEvent() visitor = event.getRichStringVisitor() visitor.setElementPrefix(element, Schema.Indent()) visitor.setElementSuffix(element, Schema.Dedent()) bSuccess = element.postTreeEventToParent(event) if not bSuccess: print 'PythonSyntaxRecognizingController._indentLine(): INDENT LINE FAILED'
def _dedentLine(self, element, fragment, node): suite = node.getParent() suiteParent = suite.getParent() if not isTopLevel(suiteParent): # This statement is not within a top-level node event = PythonDedentTreeEvent() visitor = event.getRichStringVisitor() visitor.setElementPrefix(element, Schema.Dedent()) visitor.setElementSuffix(element, Schema.Indent()) bSuccess = element.postTreeEventToParent(event) if not bSuccess: print 'PythonSyntaxRecognizingController._dedentLine(): DEDENT LINE FAILED' else: print 'PythonSyntaxRecognizingController._dedentLine(): Attempted to dedent line in top-level module'