| ч44 макет плагина с Pathogen | Содержание | ч46 |
Давайте создадим файл Potion, который мы можем использовать в качестве образца при работе над нашим плагином. Создайте где-нибудь файл [ factorial.pn ] и поместите в него следующий код Potion:
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.
Этот код создает простую функцию факториала и вызывает ее десять раз, каждый раз выводя результаты. Запустите его с помощью potion factorial.pn. Вывод должен выглядеть следующим образом:
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
Если вы не получаете этот вывод или получаете сообщение об ошибке, остановитесь и выясните, что пошло не так. Код должен работать.
Обнаружение файлов Potion
Откройте factorial.pn в Vim и выполните следующую команду:
:set filetype?
Vim будет отобразит [ filetype= ], потому что он еще не знает, что такое .pn файл. Давайте это исправим.
Создайте ftdetect/potion.vim в репозитории вашего плагина. Поместите в него следующие строки:
au BufNewFile,BufRead *.pn set filetype=potion
Это создаст одну автокоманду: команду для установки типа [ .pn ] для файлов potion. Все довольно просто.
Обратите внимание, что мы не использовали группу автокоманд, как обычно. Vim автоматически переносит содержимое ftdetect/*.vim файлов в группы автокоманд для вас, так что вам не нужно беспокоиться об этом.
Закройте factorial.pn файл и снова откройте его. Теперь снова запустите предыдущую команду:
:set filetype?
На этот раз Vim отобразит filetype=potion ]. Когда Vim запустился, он загрузил группу автокоманд внутри ~/.vim/bundle/potion/ftdetect/potion.vim, и когда он открыл factorial.pn, сработала автокоманда установив значение filetype=potion.
Теперь, когда мы научили Vim распознавать файлы Potion, мы можем перейти к созданию плагина.
Упражнения
Прочитать :help ft. Это нормально, если вы что то не поймете.
Прочитать :help setfiletype.
Измените ftdetect/potion.vim скрипт плагина Potion для использования setfiletype вместо [ set filetype ].