Syntax highlighting in Vim is a topic that could easily fill a book of its own.
We're going to cover one last important part of it here and then move on to
other things. If you want to learn more you can read the Vim documentation with
:help syntax
and look at syntax files other people have made.
Potion, like most programming languages, supports string literals like "Hello,
world!"
. We should highlight these as strings. To do this we'll use the
syntax region
command. Add the following to your Potion syntax file:
syntax region potionString start=/\v"/ skip=/\v\\./ end=/\v"/
highlight link potionString String
Close and reopen your factorial.pn
file and you'll see that the string at the
end of the file is highlighted!
The last line here should be familiar. Reread the previous two chapters if you don't understand what it does.
The first line adds to a syntax group using a "region". Regions have a "start" pattern and an "end" pattern that specify where they start and end. In this case, a Potion string starts when we see a double quote and ends when we see the next double quote.
The "skip" argument to syntax region
allows us to handle string escapes like
"She said: \"Vimscript is tricky, but useful\"!"
.
If we didn't use the skip
argument Vim would end the string at the "
before
Vimscript
, which is not what we want!
In a nutshell, the skip
argument to syntax region
tells Vim: "once you start
matching this region, I want you to ignore anything that matches skip
, even if
it would normally be considered the end of the region".
Take a few minutes and think through this. What happens with something like
"foo \\" bar"
? Is that the correct behavior? Will that always be the
correct behavior? Close this book, take a few minutes and really think about
this!
Add syntax highlighting for single quoted strings.
Read :help syn-region
.
Reading that should take longer than reading this chapter. Pour yourself a drink, you've earned it!