[О блоге] [наверх] [пред] [2016-08-12 23:13:03+03:00] [e64b581865b0f78c78824285fa5e752b989d85dc]
Темы: [perl][python][tip][vim]

Помощник в вставке import-ов в Python коде

Написал небольшого помощника для вставки import-ов в Python коде.
Например из pyasn1 библиотеки приходится часто импортировать
encode/decode функции, ObjectIdentifier объекты. Запоминать, тем более
набирать, длинные "from pyasn1.codec.der.encoder import encode  # type:
ignore" не хочется в принципе. Часто делается grep/git grep с поиском
используемого import и его copy-paste в код. Теперь можно просто набрать
encode, нажать <F3> и в виде меню completion он покажет все найденные
"from .* encode" строчки.

    function! ImportCompl()
        normal diw
        let output = system('git grep "from .* ' . @" . '" -- "**/*.py" | perl -e "while(<>){s/^.*:\d+://; \$a{\$_}++}; print reverse sort keys %a"')
        call complete(col('.'), split(output, "\n"))
        return ''
    endfunction
    autocmd FileType python inoremap <F3> <C-R>=ImportCompl()<CR>

Выбор git grep вместо grep из-за скорости работы (не хочется чтобы было
100мс или больше времени ожидания результата поиска). Выхлоп git grep
можно обработать и внутри vimscript, но это сильно больше кода, хотя и
экономия целого процесса. Perl вместо sed+uniq+sort+whatever из-за
скорости и экономии процессов.

    [оставить комментарий]