I am currently working on a project that is using Cucumber for its system/integration testing, and I am using MacVim as my primary editor. MacVim comes with Tim Pope’s excellent vim-cucumber plugin pre-installed, so you get syntax highlighting of
.feature files right out of the box.
After having used TextMate to edit Cucumber features in the past I was a bit disappointed that double-quoted strings were not being highlighted in Vim. I looked around in the plugin code a bit, and the best I can tell it is only configured to highlight multi-line strings (which are triple-quoted).
Vim allows you to extend or override syntax highlighting by adding a file in the
~/.vim/after/syntax directory that corresponds to the file type you want to modify. After spending some time with the Vim Syntax documentation and the source code of vim-cucumber’s syntax file I wrote the following:
syn region cucumberGivenString start=/"/ skip=/\\"/ end=/"/ contained containedin=cucumberGivenRegion,cucumberGivenAndRegion,cucumberGivenButRegion syn region cucumberWhenString start=/"/ skip=/\\"/ end=/"/ contained containedin=cucumberWhenRegion,cucumberWhenAndRegion,cucumberWhenButRegion syn region cucumberThenString start=/"/ skip=/\\"/ end=/"/ contained containedin=cucumberThenRegion,cucumberThenAndRegion,cucumberThenButRegion hi def link cucumberGivenString cucumberString hi def link cucumberWhenString cucumberString hi def link cucumberThenString cucumberString
When placed in a
~/.vim/after/syntax/cucumber.vim file this results in double-quoted strings in Cucumber steps being highlighted by Vim.