Соглашение об именах классов плагина Sublime Text

Чтобы создать минималистичный плагин для простых задач в Sublime Text, я делаю:

  1. Добавьте эту строку в C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\Default (Windows).sublime-keymap" (доступно в меню Настройки> Привязки клавиш - Пользователь):

    { "keys": ["ctrl+alt+enter"], "command": "myplugin123_blah" },
    
  2. Я создаю файл Python с тем же именем, т.е. myplugin123_blah.py в C:\Users\User\AppData\Roaming\Sublime Text 2\Packages\User\

  3. Создаю код плагина:

    import sublime
    import sublime_plugin
    import subprocess
    
    class Myplugin123BlahCommand(sublime_plugin.WindowCommand):
        def run(self):
            command = 'doanything'
            subprocess.Popen(command)
    

Кажется, что «имя класса» должно быть:

  • Имя command, где каждый _ удален

  • Каждое слово (разделенное _ перед удалением) должно начинаться с заглавной буквы.

  • Добавьте Command в конце имени класса

Таким образом: myplugin123_blah => class Myplugin123BlahCommand

Это правильно (только что нашел это методом проб и ошибок и просмотрел другие примеры)? Это общее правило именования подклассов sublime_plugin.WindowCommand?


person Basj    schedule 07.01.2018    source источник


Ответы (1)


Обычно к этому подходят с другой стороны - написание плагина Python с некоторыми текстовыми / оконными командами, а затем «перевод» этого имени в имя, которое вы можете вызвать из ST - но в любом случае знание правил полезно, когда вы не хотите излишне нечитаемое имя в вашем коде Python или сочетаниях клавиш и т. д.

В неофициальной документации (для ST3, который имеет те же правила, что и для устаревшего ST2) это объясняется следующим образом: http://docs.sublimetext.info/en/latest/reference/plugins.html#conventions-for-command-names

По соглашению, имена классов команд Sublime Text имеют суффикс Command и записываются как NamesLikeThisCommand. Однако имена команд автоматически преобразуются из NamesLikeThisCommand в name_like_this. Таким образом, ExampleCommand станет example, а AnotherExampleCommand станет another_example. В именах классов, определяющих команды, используйте NameLikeThisCommand. Чтобы вызвать команду из API, используйте стандартизированный name_like_this.

Что соответствует вашему открытию.

person Keith Hall    schedule 08.01.2018
comment
Обязательно ли использовать суффикс Command. Работает и без - person Smart Manoj; 09.09.2020