Плагин для Sublime Text своими руками
Не секрет, что одним из самых популярных редакторов кода у разработчиков на сегодняшний день является Sublime Text. Кроме своих индивидуальных киллер-фич, которые вскоре стали копировать разработчики других продуктов той-же ниши (например, мультиредактирование), он хорош своей расширяемостью плагинами, коих великое множество на любой вкус. Думаю, не последней причиной такого их количества является простота создания. Для примера возьмем и напишем полезный инструмент, который будет брать как попало отформатированный Python-словарь и выдавать JSON стройными рядами.
Создаем новый плагин по шаблону: “Tools->Developer->New Plugin” и сохраняем в папку, которую предложат, например как my_plugin.py
import re
import json
import sublime
import sublime_plugin
class DsonCommand(sublime_plugin.TextCommand):
""" Convert python dict to json """
def run(self, edit):
# For every selected region
for region in self.view.sel():
# Extract text from selection
line = self.view.line(region)
content = self.view.substr(line)
# Restore python dict from string
python_dict = eval(content)
# Prepare pretty-formatted JSON
json_doc = json.dumps(
python_dict,
indent=4, sort_keys=True
)
# Replace selected region with prepared JSON
self.view.replace(
edit=edit, r=region, text=json_doc
)
Теперь у нас есть команда dson
, можно ее вызвать из консоли (Ctrl+~) (выделив текст со словарем), набрав там
view.run_command('dson')
Эту команду имеет смысл повесить на горячую клавишу, если она нужна часто (Preferences->Key Bindings), например так:
{ "keys": ["ctrl+shift+d"], "command": "dson" }