Пишемо простий плагін для Sublime Text 2
Приклад реальний, з інженерної практики. Переклад виділеного числа в тексті з десяткової в шістнадцяткову систему числення. Фича повинна бути доступна з головного і контекстного меню а так само за поєднанням клавіш Ctrl + Shift + H. Результат виконання: число в Хексе записане з використанням цифр і букв верхнього регістру без будь-яких провідних символів на кшталт «0x». Якщо виділений текст не є числом - лаємося про це з статусбаре. Звертаю увагу, що приклад має намір спрощений до максимуму, щоб за деталями не загубилася суть: простота створення полігонів для Sublime.
пишемо плагін
Тиснемо Tools -> New Plugin ... і бачимо заготовку. Міняємо назву класу і пишемо функціонал в методі run. У мене вийшло наступне:
import sublime, sublime_plugin class DecToHexCommand (sublime_plugin.TextCommand): MAX_STR_LEN = 10 def run (self, edit): v = self.view # Отримуємо значення першого виділеного блоку dec = v.substr (v.sel () [0]) # Замінюємо десяткове число шістнадцятковим або виводимо повідомлення про помилку if dec.isdigit (): v.replace (edit, v.sel () [0], hex (int (dec)) [2:]. upper ()) else: # Обрізаємо занадто довгі рядки, які не вмістяться в Статусбар if len (dec)> self.MAX_STR_LEN: logMsg = dec [0: self.MAX_STR_LEN] + "..." else: logMsg = dec sublime.status_message ( "\" "+ logMsg +" \ "is not a decimal number!")
Зберігаємо туди куди запропонує редактор з ім'ям dec_to_hex.py
Додаємо пункти меню. Прописуємо клавіатурне поєднання.
Почнемо з «гарячих клавіш».
В меню тиснемо Preferences -> Key Bindings-User. Відкривається файл з настройками в форматі JSON. Швидше за все порожній. Додаємо в нього рядок.
{ "Keys": [ "ctrl + shift + h"], "command": "dec_to_hex"}
Зберігаємо. Усе. Впринципі вже можна користуватися. Якщо не працює варто подивитися що з цього приводу написано в консольке (Ctrl + `).
Для того щоб додати пункт в контекстне меню створюємо файл Context.sublime-menu такого змісту:
[ { "Command": "dec_to_hex" } ]
Думаю, що як і в попередньому випадку все зрозуміло без коментарів.
Зберігаємо в той же каталог, в який зберегли плагін.
Тобто % USERPROFILE% \ AppData \ Roaming \ Sublime Text 2 \ Packages \ User, для користувачів Windows. Там же створюємо файл Main.sublime-men u. Я порахував, що цей пункт буде найдоречніше в меню Edit, тому в файлі Main.sublime-menu написав наступне:
[ { "Id": "edit", "Children": [ { "Command": "dec_to_hex"} ] } ]
Перевіряємо. У головному і контекстом меню повинні з'явитися пункти з назвою Dec To Hex
посилання:
www.sublimetext.com/docs/api-reference - Plugin API Reference
www.sublimetext.com/download - Download
www.sublimetext.com/dev - Dev Builds. Використовую dev версії, багів поки не ловив.
net.tutsplus.com/tutorials/python-tutorials/how-to-create-a-sublime-text-2-plugin/ - Стаття на ту ж тему англійською мовою
Коментарі
Коментуючи, пам'ятайте про те, що зміст і тон Вашого повідомлення можуть зачіпати почуття реальних людей, проявляйте повагу та толерантність до своїх співрозмовників навіть у тому випадку, якщо Ви не поділяєте їхню думку, Ваша поведінка за умов свободи висловлювань та анонімності, наданих інтернетом, змінює не тільки віртуальний, але й реальний світ. Всі коменти приховані з індексу, спам контролюється.