def inline_comment(): ''' Append or align an inlined comment at position 60 for the current line or the selection. Move cursor to the start of a comment, if nothing has changed. If there wasn't any comment aside of #else/#endif put corresponding #if condition as default comment text ''' document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = common.getCommentStyleForDoc(document) if view.selection(): # If selected smth on a single line... common.extendSelectionToWholeLine(view) selectedText = view.selectionText().split('\n') if not bool(selectedText[-1]): selectedText = selectedText[0:-1] insertionText = [] firstColumn = -1 for textLine in selectedText: (currentLine, column) = processLine(textLine, commentCh) if firstColumn == -1: firstColumn = column insertionText += currentLine # Modify current document if bool(insertionText): document.startEditing() document.removeText(view.selectionRange()) pos = view.cursorPosition() document.insertText(pos, '\n'.join(insertionText) + '\n') pos.setColumn(firstColumn) view.setCursorPosition(pos) view.removeSelection() document.endEditing() else: (text, column) = processLine(document.line(pos.line()), commentCh) # Apply result (if smth really has changed) originalText = document.line(pos.line()) if bool(text) and (len(text) != 1 or originalText != text[0]): document.startEditing() # Start edit transaction: document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(text) + '\n') document.endEditing() # End transaction # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos)
def commentar(): ''' Append or align an inlined comment at position 60 for the current line or the selection. Move cursor to the start of a comment, if nothing has changed. If there wasn't any comment aside of #else/#endif put corresponding #if condition as default comment text ''' document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = common.getCommentStyleForDoc(document) if view.selection(): # If selected smth on a single line... common.extendSelectionToWholeLine(view) selectedText = view.selectionText().split('\n') if not bool(selectedText[-1]): selectedText = selectedText[0:-1] insertionText = [] firstColumn = -1 for textLine in selectedText: (currentLine, column) = processLine(textLine, commentCh) if firstColumn == -1: firstColumn = column insertionText += currentLine # Modify current document if bool(insertionText): document.startEditing() document.removeText(view.selectionRange()) pos = view.cursorPosition() document.insertText(pos, '\n'.join(insertionText) + '\n') pos.setColumn(firstColumn) view.setCursorPosition(pos) view.removeSelection() document.endEditing() else: (text, column) = processLine(document.line(pos.line()), commentCh) # Apply result (if smth really has changed) originalText = document.line(pos.line()) if bool(text) and (len(text) != 1 or originalText != text[0]): document.startEditing() # Start edit transaction: document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(text) + '\n') document.endEditing() # End transaction # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos)
def moveAbove(): """Move inlined comment before the current line at same align """ document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = getCommentStyleForDoc(document) insertionText = list() line = document.line(pos.line()) # Split a line before and after a comment (before, comment, after) = str(line).partition(commentCh) before_ls = before.lstrip() column = len(before) - len(before_ls) doxCommentOffset = 0 # Is there is a comment in a line? if bool(comment): # Yeah! It is... Now what about any text?? if bool(before.strip()): if after[0:2] == '/<': after = '/' + after[2:] doxCommentOffset = 1 insertionText.append(' ' * column + comment + after) else: # There is comment alone... Just leave it... return else: # Oops! There is no inline comment... Ok just add new one above. insertionText.append(' ' * column + commentCh) column += len(commentCh) + doxCommentOffset insertionText.append(before.rstrip()); # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(insertionText) + '\n') # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos) document.endEditing() # End transaction
def moveAbove(): '''Move an inlined comment before the current line w/ same indentation level''' document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = common.getCommentStyleForDoc(document) insertionText = list() line = document.line(pos.line()) # Split a line before and after a comment (before, comment, after) = str(line).partition(commentCh) before_ls = before.lstrip() column = len(before) - len(before_ls) doxCommentOffset = 0 # Is there is a comment in a line? if bool(comment): # Yeah! It is... Now what about any text?? if bool(before.strip()): if after[0:2] == '/<': after = '/' + after[2:] doxCommentOffset = 1 insertionText.append(' ' * column + comment + after) else: # There is comment alone... Just leave it... return else: # Oops! There is no inline comment... Ok just add new one above. insertionText.append(' ' * column + commentCh) column += len(commentCh) + doxCommentOffset insertionText.append(before.rstrip()) # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(insertionText) + '\n') # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos) document.endEditing() # End transaction
def move_inline(): ''' Move a comment at the current line as inline comment of the next line (if latter has no comment yet) ''' document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = common.getCommentStyleForDoc(document) insertionText = [] currentLine = document.line(pos.line()) auxLine2Remove = 0 # Split a line before and after a comment (before, comment, after) = currentLine.partition(commentCh) # Is there some text on a line? if bool(before.strip()): return # Aha... move cursor co comment u stupid bastard! else: # No! What about comment? if bool(comment): # Aha... the comment is here. Ok. Lets get a line below the current... lineBelow = document.line(pos.line() + 1) (b_before, b_comment, b_after) = lineBelow.partition(commentCh) auxLine2Remove = 1 # Check for text and comment in it... if bool(b_before.strip()): # Text present... Comment? if bool(b_comment): # Comment too... just leave it... return else: # Just text.... no comment. Ok lets work! # (if there is some space remains for inline comment) b_before_s = b_before.rstrip() if len(b_before_s) > kate.configuration[COMMENT_START_POS]: # Oops! No space remains! Get outa here return else: doxCommentOffset = 0 if after[0:2] == '/ ': after = '/< ' + after[2:] doxCommentOffset = 2 insertionText.append( b_before_s + ' ' * (kate.configuration[COMMENT_START_POS] - len(b_before_s)) + commentCh + after.rstrip() ) column = kate.configuration[COMMENT_START_POS] + 3 + doxCommentOffset else: # No text on the line below! Dunno what damn user wants... return else: # Nothing! Just blank line... Dunno what to do... return pass # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: if auxLine2Remove != 0: document.removeLine(pos.line() + auxLine2Remove) document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(insertionText) + '\n') # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos) document.endEditing() # End transaction
def moveInline(): ''' Move a comment at the current line as inline comment of the next line (if latter has no comment yet) ''' document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() commentCh = common.getCommentStyleForDoc(document) insertionText = [] currentLine = document.line(pos.line()) auxLine2Remove = 0 # Split a line before and after a comment (before, comment, after) = currentLine.partition(commentCh) # Is there some text on a line? if bool(before.strip()): return # Aha... move cursor co comment u stupid bastard! else: # No! What about comment? if bool(comment): # Aha... the comment is here. Ok. Lets get a line below the current... lineBelow = document.line(pos.line() + 1) (b_before, b_comment, b_after) = lineBelow.partition(commentCh) auxLine2Remove = 1 # Check for text and comment in it... if bool(b_before.strip()): # Text present... Comment? if bool(b_comment): # Comment too... just leave it... return else: # Just text.... no comment. Ok lets work! # (if there is some space remains for inline comment) b_before_s = b_before.rstrip() if len(b_before_s) > kate.configuration["commentStartPos"]: # Oops! No space remains! Get outa here return else: doxCommentOffset = 0 if after[0:2] == '/ ': after = '/< ' + after[2:] doxCommentOffset = 2 insertionText.append( b_before_s + ' ' * (kate.configuration["commentStartPos"] - len(b_before_s)) + commentCh + after.rstrip()) column = kate.configuration[ "commentStartPos"] + 3 + doxCommentOffset else: # No text on the line below! Dunno what damn user wants... return else: # Nothing! Just blank line... Dunno what to do... return pass # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: if auxLine2Remove != 0: document.removeLine(pos.line() + auxLine2Remove) document.removeLine(pos.line()) # Remove current line # insert resulting text line by line... pos.setColumn(0) document.insertText(pos, '\n'.join(insertionText) + '\n') # Move cursor to desired position pos.setColumn(column) view.setCursorPosition(pos) document.endEditing() # End transaction