Ejemplo n.º 1
0
    def parse(self, base):
        if not self.ft or not base:
            return []
        logger.info('start neoinclude parse: %s', base)

        input_data = to_bytes(self.input_data, get_encoding())
        get_complete_position = vim.Function(
            'neoinclude#file_include#get_complete_position')
        start_column = get_complete_position(input_data)
        if start_column == -1:
            return []

        get_include_files = vim.Function(
            'neoinclude#file_include#get_include_files')

        try:
            candidates = [{
                'word': item[b'word'],
                'dup': 1,
                'menu': b'[include]',
                'kind': item[b'kind']
            } for item in get_include_files(input_data)[:]]
        except TypeError as e:
            logger.exception(e)
            candidates = []
        logger.info(candidates)

        return candidates
Ejemplo n.º 2
0
def getftime(nr):
    try:
        bufname = vim.Function('bufname')
        ftime = vim.Function('getftime')
        return ftime(bufname(nr))
    except vim.error:
        return -1
Ejemplo n.º 3
0
def get_encoding(nr):
    try:
        getbufvar = vim.Function('getbufvar')
        encoding = getbufvar(nr, '&encoding')
    except vim.error:
        encoding = ''
    return to_unicode(encoding or 'utf-8', 'utf-8')
Ejemplo n.º 4
0
    def parse(self, base):
        trigger = self.trigger_cache.get(self.ft)
        if not trigger or not trigger.search(base):
            return []

        cursor = self.cursor
        try:
            func_name = vim.current.buffer.options['omnifunc']
            logger.info('omnifunc: %s', func_name)
            if not func_name:
                return []

            omnifunc = vim.Function(func_name)
            start = omnifunc(1, '')
            codepoint = self.start_column()
            logger.info('start: %s,%s', start, codepoint)
            if start < 0 or start != codepoint:
                return []
            res = omnifunc(0, to_bytes(base, get_encoding())[codepoint:])
            for i, e in enumerate(res):
                if not isinstance(e, dict):
                    res[i] = {'word': e}
                res[i]['offset'] = codepoint
            return res
        except (vim.error, ValueError, KeyboardInterrupt):
            return []
        finally:
            self.cursor = cursor
Ejemplo n.º 5
0
 def _get_candidates(self):
     get_candidates = vim.Function('necosyntax#gather_candidates')
     candidates = [{
         'abbr': word,
         'dup': 1,
         'menu': b'[S]'
     } for word in get_candidates()[:]]
     candidates.sort(key=lambda x: x['abbr'])
     return candidates
Ejemplo n.º 6
0
def _gen_ale_completions(input_data):
    if not vim_exists('g:loaded_ale'):
        return []

    s = vim.Function("ale#completion#GetCompletionPositionForDeoplete")(input_data)  # noqa

    add_offset = 'completor#utils#add_offset(cs, {})'.format(s)
    args = "{'callback': {cs -> completor#action#trigger(" + add_offset + ")}}"
    cmd = ":call ale#completion#GetCompletions('ale-callback', " + args + ")"

    vim.command(cmd)
Ejemplo n.º 7
0
    def gen_entry(self, base):
        gather_candidates = vim.Function('necovim#gather_candidates')

        binput_data = to_bytes(self.input_data, get_encoding())
        bbase = to_bytes(base, get_encoding())

        candidates = gather_candidates(binput_data, bbase)
        for entry in candidates:
            score = test_subseq(base, to_unicode(entry[b'word'], 'utf-8'))
            if score is None:
                continue
            yield entry, score
Ejemplo n.º 8
0
    def parse(self, base):
        trigger = self.trigger_cache.get(self.ft)
        if not trigger or not trigger.search(base):
            return []

        cursor = self.cursor
        try:
            func_name = vim.current.buffer.options['omnifunc']
            logger.info('omnifunc: %s', func_name)
            if not func_name:
                return []

            omnifunc = vim.Function(func_name)
            start = omnifunc(1, '')
            codepoint = self.start_column()
            logger.info('start: %s,%s', start, codepoint)
            if start < 0 or start != codepoint:
                return []
            return omnifunc(0, to_bytes(base, get_encoding())[codepoint:])
        except (vim.error, ValueError, KeyboardInterrupt):
            return []
        finally:
            self.cursor = cursor
Ejemplo n.º 9
0
 def __init__(self):
     super(Completor, self).__init__()
     necosyntax_init = vim.Function('necosyntax#initialize')
     necosyntax_init()
Ejemplo n.º 10
0
 def get_offset(self):
     line, col = vim.current.window.cursor
     line2byte = vim.Function('line2byte')
     return line2byte(line) + col - 1