Добавление пользовательских меню в Sublime Text
Как добавить пользовательский пункт меню в SublimeText 2.
Любые идеи?
Я вижу, что есть файл Main.sublime-menu, но не знаю, как его редактировать.
Спасибо!
Ответы
Ответ 1
Файл *.sublime-menu - это просто JSON. Вы можете создать Main.sublime-меню в своем каталоге пользователя, и оно будет объединено с другими записями меню. Может быть полезно просмотреть файлы Main.sublime-меню, которые имеют сторонние плагины. Они, как правило, намного короче, поэтому может быть легче понять некоторые вещи, которые вам нужно определить в каждой записи.
изменить
Вы можете использовать следующее в качестве плагина для открытия блокнота с произвольным файлом.
import sublime
import sublime_plugin
import subprocess
import threading
class OpenNotepadCommand(sublime_plugin.TextCommand):
def run(self, edit, filename=None):
th = NotepadThread(filename)
th.start()
class NotepadThread(threading.Thread):
def __init__(self, filename=None):
self.filename = filename
threading.Thread.__init__(self)
def run(self):
if self.filename is not None:
subprocess.call("notepad.exe %s" % self.filename)
else:
subprocess.call("notepad.exe")
При создании элемента меню для команды и аргументов используйте что-то вроде следующего.
{
"command": "open_notepad",
"args": { "filename": "<the absolute path here>"}
}
Ответ 2
Легче вариант, если вы хотите просто запустить команду. Создайте файл Context.sublime-menu внутри вашего каталога Packages/User и добавьте следующее:
[
{ "caption": "<Your caption here>", "command": "exec", "args": {"cmd": ["<your cmd name>", "<arg1>", "<arg2>", <...>]} }
]
Пример: добавление пункта меню в контекстное меню, в котором запускается только dir:
[
{ "caption": "List files in current dir", "command": "exec", "args": {"cmd": ["dir"]} }
]
Ответ 3
Я знаю слишком поздно, чтобы присоединиться к вечеринке и добавить свои 2 цента. В любом случае, Main.sublime-menu - это файл, который позволяет вам добавлять пункты меню в верхнее меню, т.е. [Файл, Правка, Выбор, Найти, Вид, Перейти и т.д.]
Я недавно добавил новый раздел "Dev", чтобы понять это. Я также хотел способ запуска предварительного просмотра браузера для конкретного браузера. Проверьте это.
[
{
"caption": "Dev",
"mnemonic": "Z",
"id": "dev",
"children": [
{
"caption" : "Previews",
"children": [
{ "caption": "Markdown Live Preview", "command": "new_markdown_live_preview", "id": "markdown_live_preview" },
{ "caption": "Preview in Default Browser", "command": "view_in_browser", "id": "markdown_live_preview" },
{ "caption": "Preview in Firefox", "command": "view_in_browser", "args": { "browser": "firefox" }, "id": "markdown_live_preview" },
{ "caption": "Preview in Chrome","command": "view_in_browser", "args": { "browser": "chrome" }, "id": "markdown_live_preview" },
{ "caption": "Preview in Safari", "command": "view_in_browser", "args": { "browser": "safari" }, "id": "markdown_live_preview" },
]
},
]
}
]
Во всяком случае, это все еще работает в ST3. На всякий случай, когда кто-нибудь спотыкается здесь.