def turnFromBlockComment(): document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() if view.selection(): sr = view.selectionRange() start = sr.start().line() end = sr.end().line() else: # Try to detect block comment (/* ... */) r = common.getTextBlockAroundCursor( document , pos , [pred.blockCommentStart, neg(pred.startsWith('*'))] , [pred.blockCommentEnd, neg(pred.startsWith('*'))] ) start = r.start().line() - 1 end = r.end().line() + 1 # Replace comments insertionText = list() align = None for i in range(start, end): line = str(document.line(i)) sline = line.lstrip() if align == None: align = ' ' * (len(line) - len(sline)) if sline.startswith('/**') or sline.startswith('*/'): continue if sline.startswith('*'): insertionText.append(align + sline.replace('*', '///', 1)) originRange = KTextEditor.Range(start, 0, end, 0) pos.setPosition(start, len(align) + 3) insertPos = KTextEditor.Cursor(start, 0) # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeText(originRange) # Remove current line # insert resulting text line by line... document.insertText(insertPos, '\n'.join(insertionText) + '\n') # Move cursor to desired position view.setCursorPosition(pos) document.endEditing() # End transaction
def turnFromBlockComment(): document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() if view.selection(): sr = view.selectionRange() start = sr.start().line() end = sr.end().line() else: # Try to detect block comment (/* ... */) r = common.getTextBlockAroundCursor( document, pos, [pred.blockCommentStart, neg(pred.startsWith('*'))], [pred.blockCommentEnd, neg(pred.startsWith('*'))]) start = r.start().line() - 1 end = r.end().line() + 1 # Replace comments insertionText = list() align = None for i in range(start, end): line = str(document.line(i)) sline = line.lstrip() if align == None: align = ' ' * (len(line) - len(sline)) if sline.startswith('/**') or sline.startswith('*/'): continue if sline.startswith('*'): insertionText.append(align + sline.replace('*', '///', 1)) originRange = KTextEditor.Range(start, 0, end, 0) pos.setPosition(start, len(align) + 3) insertPos = KTextEditor.Cursor(start, 0) # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeText(originRange) # Remove current line # insert resulting text line by line... document.insertText(insertPos, '\n'.join(insertionText) + '\n') # Move cursor to desired position view.setCursorPosition(pos) document.endEditing() # End transaction
def turnToBlockComment(): document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() if view.selection(): sr = view.selectionRange() start = sr.start().line() end = sr.end().line() else: r = common.getTextBlockAroundCursor( document, pos, [neg(any_of(pred.startsWith('///'), pred.startsWith('//!')))], [neg(any_of(pred.startsWith('///'), pred.startsWith('//!')))]) start = r.start().line() end = r.end().line() # Replace comments in every line insertionText = list() align = None for i in range(start, end): line = str(document.line(i)) sline = line.lstrip() if align == None: align = ' ' * (len(line) - len(sline)) insertionText.append( align + sline.replace('///', ' *', 1).replace('//!', ' *', 1)) originRange = KTextEditor.Range(start, 0, end, 0) pos.setPosition(start + 1, len(align) + 3) insertPos = KTextEditor.Cursor(start, 0) # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeText(originRange) # Remove current line # insert resulting text ... document.insertText( insertPos, align + '/**\n' + '\n'.join(insertionText) + '\n' + align + ' */\n') # Move cursor to desired position view.setCursorPosition(pos) document.endEditing() # End transaction
def getParagraphRange(doc, pos): # Try to detect block comment (/* ... */) r = common.getTextBlockAroundCursor( doc, pos, [pred.blockCommentStart, pred.equalTo('*'), neg(pred.startsWith('*'))], [pred.blockCommentEnd, pred.equalTo('*'), neg(pred.startsWith('*'))]) isBlock = True if r.isEmpty(): # Ok, maybe it's a single lines comment block? r = common.getTextBlockAroundCursor(doc, pos, [neg(pred.onlySingleLineComment)], [neg(pred.onlySingleLineComment)]) isBlock = False return (r, isBlock)
def turnToBlockComment(): document = kate.activeDocument() view = kate.activeView() pos = view.cursorPosition() if view.selection(): sr = view.selectionRange() start = sr.start().line() end = sr.end().line() else: r = common.getTextBlockAroundCursor( document , pos , [neg(any_of(pred.startsWith('///'), pred.startsWith('//!')))] , [neg(any_of(pred.startsWith('///'), pred.startsWith('//!')))] ) start = r.start().line() end = r.end().line() # Replace comments in every line insertionText = list() align = None for i in range(start, end): line = str(document.line(i)) sline = line.lstrip() if align == None: align = ' ' * (len(line) - len(sline)) insertionText.append(align + sline.replace('///', ' *', 1).replace('//!', ' *', 1)) originRange = KTextEditor.Range(start, 0, end, 0) pos.setPosition(start + 1, len(align) + 3) insertPos = KTextEditor.Cursor(start, 0) # Update the document if bool(insertionText): document.startEditing() # Start edit transaction: document.removeText(originRange) # Remove current line # insert resulting text ... document.insertText(insertPos, align + '/**\n' + '\n'.join(insertionText) + '\n' + align + ' */\n'); # Move cursor to desired position view.setCursorPosition(pos) document.endEditing() # End transaction
def getParagraphRange(doc, pos): # Try to detect block comment (/* ... */) r = common.getTextBlockAroundCursor( doc , pos , [pred.blockCommentStart, pred.equalTo('*'), neg(pred.startsWith('*'))] , [pred.blockCommentEnd, pred.equalTo('*'), neg(pred.startsWith('*'))] ) isBlock = True if r.isEmpty(): # Ok, maybe it's a single lines comment block? r = common.getTextBlockAroundCursor( doc , pos , [neg(pred.onlySingleLineComment)] , [neg(pred.onlySingleLineComment)] ) isBlock = False return (r, isBlock)