docs: def objectAtCursor(self):
          """
          Returns the python object that the text is representing.
          
          :return     <object> || None
          """
          
          # determine the text block
          cursor   = self.textCursor()
          text     = projex.text.nativestring(cursor.block().text())
          position = cursor.positionInBlock() - 1
          
          if not text:
              return (None, '')
          
          symbol   = ''
          for match in re.finditer('[\w\.]+', text):
              if match.start() <= position <= match.end():
                  symbol = match.group()
                  break
          
          if not symbol:
              return (None, '')
          
          parts = symbol.split('.')
          if len(parts) == 1:
              return (self.scope(), parts[0])
          
          part = parts[0]
          obj = self.scope().get(part)
          for part in parts[1:-1]:
              try:
                  obj = getattr(obj, part)
              except AttributeError:
                  return (None, '')
          
          return (obj, parts[-1])