code: def keep_tc_pos(func):
      
      @functools.wraps(func)
      def wrapper(editor, *args, **kwds):
          """ Decorator """
          sb = editor.verticalScrollBar()
          spos = sb.sliderPosition()
          pos = editor.textCursor().position()
          retval = func(editor, *args, **kwds)
          text_cursor = editor.textCursor()
          text_cursor.setPosition(pos)
          editor.setTextCursor(text_cursor)
          sb.setSliderPosition(spos)
          return retval
      return wrapper
docs: Cache text cursor position and restore it when the wrapped
      function exits.
  
      This decorator can only be used on modes or panels.
  
      :param func: wrapped function