Пример #1
0
def _choose_action(denite: Default, params: Params) -> typing.Any:
    candidates = denite._get_selected_candidates()
    if not candidates or not denite._denite:
        return

    action_names = denite._denite.get_action_names(denite._context, candidates)
    denite._vim.vars['denite#_actions'] = action_names
    clear_cmdline(denite._vim)
    action = input(denite._vim, denite._context, 'Action: ', '',
                   'customlist,denite#helper#complete_actions')
    if action == '':
        return
    return denite.do_action(action, is_manual=True)
Пример #2
0
def _do_previous_action(denite: Default, params: Params) -> typing.Any:
    return denite.do_action(denite._prev_action, is_manual=True)
Пример #3
0
def _do_action(denite: Default, params: Params) -> typing.Any:
    name = params[0] if params else 'default'
    return denite.do_action(name, is_manual=True)
Пример #4
0
def _auto_action(denite: Default, params: Params) -> typing.Any:
    if not denite._context['auto_action']:
        return
    return denite.do_action(denite._context['auto_action'])
Пример #5
0
def _quick_move(denite: Default, params: Params) -> typing.Any:
    vim = denite._vim
    context = denite._context

    def get_quick_move_table() -> typing.Dict[str, int]:
        table = {}
        base = vim.call('line', '.')
        for [key, number] in context['quick_move_table'].items():
            number = int(number)
            pos = ((base - number) if context['reversed'] else (number + base))
            if pos > 0:
                table[key] = pos
        return table

    def quick_move_redraw(table: typing.Dict[str, int],
                          is_define: bool) -> None:
        bufnr = vim.current.buffer.number
        for [key, number] in table.items():
            signid = 2000 + number
            name = 'denite_quick_move_' + str(number)
            if is_define:
                if vim.call('exists', '*sign_define'):
                    vim.call('sign_define', name, {
                        'text': key,
                        'texthl': 'Special'
                    })
                    vim.call('sign_place', signid, '', name, bufnr,
                             {'lnum': number})
                else:
                    vim.command(
                        f'sign define {name} text={key} texthl=Special')
                    vim.command(f'sign place {signid} name={name} '
                                f'line={number} buffer={bufnr}')
            else:
                if vim.call('exists', '*sign_define'):
                    vim.call('sign_unplace', '', {
                        'id': signid,
                        'buffer': bufnr
                    })
                    vim.call('sign_undefine', name)
                else:
                    vim.command(
                        f'silent! sign unplace {signid} buffer={bufnr}')
                    vim.command('silent! sign undefine ' + name)

    quick_move_table = get_quick_move_table()
    vim.command('echo "Input quick match key: "')
    quick_move_redraw(quick_move_table, True)
    vim.command('redraw')

    char = ''
    while char == '':
        char = vim.call('nr2char', vim.call('denite#util#getchar'))

    quick_move_redraw(quick_move_table, False)

    if char not in quick_move_table:
        return

    denite._move_to_pos(int(quick_move_table[char]))

    if context['quick_move'] == 'immediately':
        if context['sources_queue']:
            context['sources_queue'].pop(0)
        denite.do_action('default', is_manual=True)
        return True