Есть ли способ изменить шаблон отображения списка быстрых исправлений - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь настроить связывание клавиш для создания скелета функции текущего файла, используя grep и список местоположений.Поскольку я сканирую только текущий файл, имя файла в начале каждой строки является избыточным и делает вывод менее читаемым.Во-вторых, шаблон отображения по умолчанию удаляет пробелы в начале сообщения, удаляя информацию о вложенности функций.

Изменение grepformat по умолчанию %f:%l:%m на %l:%m удаляет имя файла в начале каждогострока в списке местоположений, но без имени она не знает, что искать в текущем файле, поэтому я не могу перейти к различным функциям.

Просмотр документации errorformat и quickfix не делаетНасколько я могу судить, я могу указать любые варианты изменения шаблона отображения списка быстрых исправлений \ местоположений.

Это обеспечивает привязку клавиш для функционального списка местоположений, но при неправильном форматировании:

grepformat=%f:%l:%m
nnoremap <buffer> <leader>l :silent lgrep! function %<CR>:lopen<CR>

Это обеспечиваетлучше отформатированный, но не функциональный список местоположений:

grepformat=%l:%m
nnoremap <buffer> <leader>l :silent lgrep! -h function %<CR>:lopen<CR>

Обратите внимание, что опция -h grep подавляет имя файла в выходных данных

Исходный вывод grep почти точно так, как я хочуотформатированный код:

1:function actigraphyCalculator(dirname)
69:     function [checkedFiles, metadata] = readQcData
75:    function fileContents = openFile(name, filePaths)
80:     function fileContents = qcprocessing(name, fileContents, metadata)
90:    function fileContents = removeBadDays(name, fileContents, metadata)
106:    function path = createSavePath(filepath)

Единственная проблема заключается в несовместимости отступов и разной длины номеров.используйте сообщения, чтобы они не выровнялись идеально.

Текущий вывод для списка местоположений того же файла:

calcActigraphy/actigraphyCalculator.m|1| function actigraphyCalculator(dirname)
calcActigraphy/actigraphyCalculator.m|69| function [checkedFiles, metadata] = readQcData
calcActigraphy/actigraphyCalculator.m|75| function fileContents = openFile(name, filePaths)
calcActigraphy/actigraphyCalculator.m|80| function fileContents = qcprocessing(name, fileContents, metadata)
calcActigraphy/actigraphyCalculator.m|90| function fileContents = removeBadDays(name, fileContents, metadata)

Обратите внимание на отсутствие отступа в начале сообщения. ** 1029

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете использовать :help :syn-conceal, чтобы скрыть имя файла из списка быстрых исправлений.Он все еще там физически (так что навигация все еще работает), он просто больше не отображается.

Я нашел основную идею в , как отформатировать запись vim quickfix ;вот карта, которую я использую для этого (чтобы поместить в ~/.vim/ftplugin/qf_conceal.vim:

function! s:ToggleLocation()
    if ! v:count && &l:conceallevel != 0
        setlocal conceallevel=0
        silent! syntax clear qfLocation
    else
        setlocal concealcursor=nc
        silent! syntax clear qfLocation
        if v:count == 1
            " Hide file paths only.
            setlocal conceallevel=1
            " XXX: Couldn't find a way to integrate the concealment with the
            " existing "qfFileName" definition, and had to replace it. This will
            " persist when toggling off; only a new :setf qf will fix that.
            syntax match qfLocation /^\%([^/\\|]*[/\\]\)\+/ transparent conceal cchar=‥ nextgroup=qfFileName
            syntax clear qfFileName
            syntax match qfFileName /[^|]\+/ contained
        elseif v:count == 2
            " Hide entire filespec.
            setlocal conceallevel=2
            syntax match qfLocation /^[^|]*/ transparent conceal
        else
            " Hide filespec and location.
            setlocal conceallevel=2
            syntax match qfLocation /^[^|]*|[^|]*| / transparent conceal
        endif
    endif
endfunction
"[N]<LocalLeader>tf Toggle filespec and location to allow focusing on the
"           error text.
"           [N] = 1: Hide file paths only.
"           [N] = 2: Hide entire filespec.
"           [N] = 3: Hide filespec and location.
nnoremap <buffer> <silent> <LocalLeader>tf :<C-u>call <SID>ToggleLocation()<CR>
...