'Get the previous buffer position information.
@param ignore_styles {tuple}
@returns {tuple} with values (pos, char, style), these values will
all be None if it exceeds the max_look_back.
@raises IndexError can be raised when nothing left to consume.'

def getPrevPosCharStyle(self, ignore_styles=None, max_look_back=100):

    count = 0
    while (count < max_look_back):
        count += 1
        self._cachePos -= 1
        if (self._cachePos < 0):
            self._extendCacheBackwards()
        self._style = self._styleCache[self._cachePos]
        if ((ignore_styles is None) or (self._style not in ignore_styles)):
            self._ch = self._chCache[self._cachePos]
            break
    else:
        return (None, None, None)
    self._pos = (self._cachePos + self._cacheFirstBufPos)
    if self._debug:
        print ('getPrevPosCharStyle::    pos:%d    ch:%r    style:%d' % (self._pos, self._ch, self._style))
    return (self._pos, self._ch, self._style)
