'Performs extended word selection. Extended selection consists in
selecting the word under cursor and any other words that are linked
by a ``continuation_chars``.
:param continuation_chars: the list of characters that may extend a
word.'

def select_extended_word(self, continuation_chars=('.',)):

    cursor = self._editor.textCursor()
    original_pos = cursor.position()
    start_pos = None
    end_pos = None
    stop = False
    seps = (self._editor.word_separators + ['    '])
    while (not stop):
        cursor.clearSelection()
        cursor.movePosition(cursor.Left, cursor.KeepAnchor)
        char = cursor.selectedText()
        if cursor.atBlockStart():
            stop = True
            start_pos = cursor.position()
        elif ((char in seps) and (char not in continuation_chars)):
            stop = True
            start_pos = (cursor.position() + 1)
    cursor.setPosition(original_pos)
    stop = False
    while (not stop):
        cursor.clearSelection()
        cursor.movePosition(cursor.Right, cursor.KeepAnchor)
        char = cursor.selectedText()
        if cursor.atBlockEnd():
            stop = True
            end_pos = cursor.position()
            if (char in seps):
                end_pos -= 1
        elif ((char in seps) and (char not in continuation_chars)):
            stop = True
            end_pos = (cursor.position() - 1)
    if (start_pos and end_pos):
        cursor.setPosition(start_pos)
        cursor.movePosition(cursor.Right, cursor.KeepAnchor, (end_pos - start_pos))
        self._editor.setTextCursor(cursor)
