- PVSM.RU - https://www.pvsm.ru -
При командной разработке важным является соблюдение определенного кодинг стандарта. Речь не всегда идет об именовании переменных, функций и т.д. Перечисленное выше во многом вопрос опыта и умения формулировать мысли в тексте. Кодинг стандарт часто начинается с определения следующих вещей:
Несоблюдение приведенных выше параметров стиля разными людьми в пределах одного файла ведет с следующим проблемам:
Часто такие проблемы возникают из-за того, что новый человек, вошедший в проект, не настроил редактор корректно, и это остается незамеченным вплоть до того момента, как становится нужно сравнить разные версии одного и того же файла.
Чтобы сразу при открытии файла видеть подобные проблемы, я написал небольшой плагин.
На это было несколько причин:
listchars
не дает подсветки в случае использования пробелов для отступов при опции noexpandtab
ftplugin
expandtab
: если опция включена, то символы табуляции подсвечиваются красным, в противном случае пробелы в начале строки подсвечиваются желтымtextwidth
В основе плагина лежит функция matchadd()
. Эта функция ищет в открытом буфере совпадения с заданным паттерном и подсвечивает его в соответствии с указанной схемой подсветки.
Например, мы хотим подсветить все пробелы в буфере желтым:
:highligh Spaces ctermbg=Yellow guibg=Yellow
:call matchadd('Spaces', 's+')
Общая функция подсветки выглядит следующим образом:
function FileStyleHighlightPattern(highlight)
call matchadd(a:highlight['highlight'], a:highlight['pattern'])
endfunction
На вход принимается словарь с именем схемы подсветки и паттерном для сравнения.
Для того, чтобы плагин автоматически запускал проверку паттернов, необходимо было добавить автоматические команды при инициализации плагина:
augroup filestyle_auto_commands
autocmd!
autocmd BufReadPost,BufNewFile * call FileStyleActivate()
autocmd FileType * call FileStyleCheckFiletype()
autocmd WinEnter * call FileStyleCheck()
augroup end
Стоит отдельно оговорить, для чего нужен обработчик события FileType
. Его пришлось добавить для того, чтобы плагин не отрабатывал на help
файлах, так как их содержимое может быть произвольным и никак не согласовываться с текущими настройками, а так же не может быть отредактировано из окна помощи.
Обработчик WinEnter
нужен для того, чтобы при делении окна (:split
) в открытом окне так же была подсветка.
Так выглядит конечный результат:
Скачать можно по ссылкам: vim.org [1] | GitHub [2]
Автор: DrLivesey
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vim/77022
Ссылки в тексте:
[1] vim.org: http://www.vim.org/scripts/script.php?script_id=5065
[2] GitHub: https://github.com/aserebryakov/filestyle
[3] Источник: http://habrahabr.ru/post/245691/
Нажмите здесь для печати.