2013-04-22 5 views

risposta

15

Il file del menu * .sublime è semplicemente JSON. Puoi creare un menu Main.sublime nella tua directory utente e sarà unito con altre voci di menu. Potrebbe essere utile consultare i file del menu Main.sublime che hanno i plugin di terze parti. Questi sono generalmente molto più brevi, quindi potrebbe essere più facile capire alcune delle cose che devi definire in ogni voce.

modificare

È possibile utilizzare il seguente come un plugin per aprire il blocco note con un file arbitrario.

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") 

Durante la creazione di una voce di menu utilizzare qualcosa come il seguente per il comando e gli argomenti.

{ 
    "command": "open_notepad", 
    "args": { "filename": "<the absolute path here>"} 
} 
+0

Il ' La directory dei pacchetti di default contiene i menu principali (menu) e quelli contestuali (tasto destro) integrati. Credo che sia anche possibile personalizzare il menu della barra laterale - vedi il plugin per l'ottimizzazione della barra laterale. . . – lawlist

+0

@skuroda Cerca in Google. Non riesco a trovare nulla di utile. Qualcuno sa come creare un plugin che può eseguire un file da Sublime Text. Troverò la mia strada da quella. Grazie – Avi

+0

@AviAryan Che cosa stai cercando di eseguire? I plugin sono semplicemente python, quindi puoi usare il modulo subprocess per creare nuovi processi ed eseguire quello che vuoi. Puoi anche dare un'occhiata a [Build Systems] (http://docs.sublimetext.info/en/latest/file_processing/build_systems.html) o [SublimeREPL] (https://github.com/wuub/SublimeREPL). – skuroda

9

Opzione più semplice se ciò che si desidera è semplicemente eseguire un comando. Creare un Context.sublime-menu di file all'interno della cartella Packages/utente, e aggiungere il seguente:

[ 
    { "caption": "<Your caption here>", "command": "exec", "args": {"cmd": ["<your cmd name>", "<arg1>", "<arg2>", <...>]} } 
] 

Esempio: Aggiunta di una voce di menu al menu contestuale che basta eseguire dir:

[ 
    { "caption": "List files in current dir", "command": "exec", "args": {"cmd": ["dir"]} } 
] 
+0

Questa risposta mi ha aiutato molto, poiché c'è così tanto là fuori su questo argomento che in realtà non copre questa semplice operazione. – sugardaddy

+0

Tuttavia, per farlo funzionare sul mio Windows ST2, ho dovuto aggiungere questo come uno degli elementi (un fratello di sottotitoli e comandi, ecc.) ... "id": "justSomethingUniqueLikeActionName" Quindi ecco il mio codice per eseguire una sequenza per il plug-in RegReplace ... '{ \t "id": "cfmlToCfScript", \t "caption": "CFML per cfscript", "comando" \t: "reg_replace", \t "args": { \t \t "sostituti": [ \t \t \t "funzionamento1" \t \t \t, "operation2" \t \t] \t \t, "find_only": false \t} 0.123.} ' – sugardaddy

+0

Se è stata creata una directory per il plug-in (es. 'Packages/plugin_name') inserisce il file del menu sublime in quella directory e usa il nome del comando del plugin nel valore' command' del JSON. E.g: '{" caption ":" Plugin desc "," command ":" plugin_cmd "}' – steve