SublimeText и плагины

Среди разнообразных полезностей редактора, названия которого выведено в заголовок, есть и возможность написания к нему плагинов. Чем я сразу и воспользовался. Не будем рассматривать сферических коней, а просто приведём пример с по крайней мере для меня полезной функциональностью.
Итак, что нужно? А нужно, чтобы выделенная строка или её кусок по хоткею обрамлялись <p>-тегами. (Такие выкрутасы удобны при создании fb2 из plain text, особенно когда сниппетами врезаются остальные «служебные» теги). По вкусу можно почитать документацию, от основного сайта до community-driven и приступить, собственно, к коду.
0. Создаём заготовку через Tools → new plugin, пишем код, примерно такой:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sublime, sublimeplugin

# Сделан биндинг на Ctrl+p, действие плагина
# теперь только по этому хоткею и работает 

__author__ = "Saudade"

print "plugin 'addPTags' loaded"

class addPTags(sublimeplugin.TextCommand):
    def run(self, view, args):
        for region in view.sel():
            if not region.empty():
                # Get the selected text
                s = view.substr(region)
                s = '<p>' + s + '</p>'
                # Replace the selection with transformed text
                view.replace(region, s)
                sublime.statusMessage("Plugin done the job")

1. Сохраняем в ../Data/Packages/User (собственно, эта директория и будет предложена по умолчанию)
2. В консоли (Ctrl+~) видим что-то наподобие:

writing file ../Data/Packages/User/addPTags.py with encoding UTF-8
Reloading plugin ../Data/Packages/User/addPTags.py

Это плагин понял, что он именно плагин, а не просто рандомный набор набранных в файле символов.
3. Теперь можно присвоить хоткей, по которому будет активироваться плагин:
Открываем Preferences → User File Preferences и добавляем

<binding key="ctrl+p" command="addPTags"/>

4. Первоначальная активация по view.runCommand(‘addPTags’) в консоли. Это достаточно сделать один раз, потом уже SublimeText будет сам подгружать этот и остальные (если они есть или будут) плагины.

P.S. Вполне достаточно мозги плагина прописывать в def run, а не во всяких onSelectionModified, хоть и кажется, что это логично, да и другие так вполне делают. (См. исходники к плагину HighlightCurrentWord) Конечно, можно и в onSelectionModified, но тогда есть не иллюзорные шансы от души пострелять себе в ногу, а то и в две.

Реклама

2 responses to “SublimeText и плагины

Обсуждение закрыто.