'Gets the word under cursor using the separators defined by
:attr:`spyder.widgets.sourcecode.CodeEditor.word_separators`.
FIXME: This is not working because CodeEditor have no attribute
word_separators
.. note: Instead of returning the word string, this function returns
a QTextCursor, that way you may get more information than just the
string. To get the word, just call ``selectedText`` on the returned
value.
:param select_whole_word: If set to true the whole word is selected,
else the selection stops at the cursor position.
:param text_cursor: Optional custom text cursor (e.g. from a
QTextDocument clone)
:returns: The QTextCursor that contains the selected word.'

def word_under_cursor(self, select_whole_word=False, text_cursor=None):

    editor = self._editor
    if (not text_cursor):
        text_cursor = editor.textCursor()
    word_separators = editor.word_separators
    end_pos = start_pos = text_cursor.position()
    while (not text_cursor.atStart()):
        text_cursor.movePosition(text_cursor.Left, text_cursor.KeepAnchor, 1)
        try:
            char = text_cursor.selectedText()[0]
            word_separators = editor.word_separators
            selected_txt = text_cursor.selectedText()
            if (((selected_txt in word_separators) and ((selected_txt != 'n') and (selected_txt != 't'))) or char.isspace()):
                break
        except IndexError:
            break
        start_pos = text_cursor.position()
        text_cursor.setPosition(start_pos)
    if select_whole_word:
        text_cursor.setPosition(end_pos)
        while (not text_cursor.atEnd()):
            text_cursor.movePosition(text_cursor.Right, text_cursor.KeepAnchor, 1)
            char = text_cursor.selectedText()[0]
            selected_txt = text_cursor.selectedText()
            if (((selected_txt in word_separators) and ((selected_txt != 'n') and (selected_txt != 't'))) or char.isspace()):
                break
            end_pos = text_cursor.position()
            text_cursor.setPosition(end_pos)
    text_cursor.setPosition(start_pos)
    text_cursor.setPosition(end_pos, text_cursor.KeepAnchor)
    return text_cursor
