Let's create a Potion file we can use as a sample as we're working on our
plugin. Create a factorial.pn
file somewhere and put the following Potion
code inside it:
factorial = (n):
total = 1
n to 1 (i):
total *= i.
total.
10 times (i):
i string print
'! is: ' print
factorial (i) string print
"\n" print.
This code creates a simple factorial function and calls it ten times, printing
the results each time. Go ahead and run it with potion factorial.pn
. The
output should look like this:
0! is: 0
1! is: 1
2! is: 2
3! is: 6
4! is: 24
5! is: 120
6! is: 720
7! is: 5040
8! is: 40320
9! is: 362880
If you don't get this output, or you get an error, stop and figure out what's gone wrong. The code should work exactly as-is.
Take some time to understand how the code works. Refer to the Potion docs liberally. It's not critical to understanding Vimscript but it will make you a better programmer.
Open factorial.pn
in Vim and run the following command:
:set filetype?
Vim will display filetype=
because it doesn't know what a .pn
file is yet.
Let's fix that.
Create ftdetect/potion.vim
in your plugin's repo. Put the following lines
into it:
au BufNewFile,BufRead *.pn set filetype=potion
This creates a single autocommand: a command to set the filetype of .pn
files
to potion
. Pretty straightforward.
Notice that we didn't use an autocommand group like we usually would. Vim
automatically wraps the contents of ftdetect/*.vim
files in autocommand groups
for you, so you don't need to worry about it.
Close the factorial.pn
file and reopen it. Now run the previous command
again:
:set filetype?
This time Vim displays filetype=potion
. When Vim started up it loaded the
autocommand group inside ~/.vim/bundle/potion/ftdetect/potion.vim
, and when it
opened factorial.pn
the autocommand fired, setting the filetype
to potion
.
Now that we've taught Vim to recognize Potion files we can move on to actually creating some useful behavior in our plugin.
Read :help ft
. Don't worry if you don't understand everything there.
Read :help setfiletype
.
Modify the Potion plugin's ftdetect/potion.vim
script to use setfiletype
instead of set filetype
.