2012-11-09 7 views
10

Ad esempio, desidero evidenziare @param, @type e @return (ovvero dichiarazioni di epytext) nelle mie istruzioni di Python. Ho capito come fare semplicemente modificando Python/Python.tmLanguage; tuttavia, mi piacerebbe davvero mettere questo in un proprio file, per un paio di motivi:Come si aggiungono funzionalità a una definizione di sintassi in Sublime Text senza modificarlo?

  1. io non sempre desidera applicare questa evidenziazione. È solo per i progetti che utilizzano epydoc come strumento di documentazione; in altri progetti, vorrei evidenziare invece reStructuredText.
  2. Quando gli aggiornamenti di Testo sublime, mi piacerebbe avere la mia sintassi come sovrapposizione sulle funzionalità incluse. ci sono diverse funzionalità di Python che l'autore di Sublime può scegliere di includere nelle versioni future e non voglio dover capire manualmente cosa ho cambiato ogni volta che un aggiornamento modifica la definizione della sintassi Python di base.
  3. Mantengo la mia configurazione di editor nel controllo della versione, ma voglio che siano le mie cose originali; Non voglio essere gravato dal fatto di dover portare copie (possibilmente proprietarie? Non so, non sembra avere una licenza indipendente) di definizioni di sintassi fornite con Sublime.

C'è un modo per mettere le regole di evidenziazione in un file separato, forse per essere applicato solo a un particolare ambito?

+1

Mi piacerebbe molto vedere il file di sintassi finale, perché voglio fare qualcosa di molto simile in ST3. Si prega di prendere in considerazione la pubblicazione. Grazie. – aliteralmind

risposta

7

Mi sembra che tu voglia creare il tuo file di sintassi, ereditare dal file di sintassi Python (source.python) e apportare lì le tue modifiche e personalizzazioni. Sublime Text 2 utilizza lo .tmLanguage format for syntax files, che è un po 'complesso, ma fortunatamente la maggior parte del lavoro è già stato fatto per te, solo ereditando da source.python.

Quello che si vuole fare è impostare un modello regex in modo che corrisponda alle sottostringhe che si desidera evidenziare e dare a quel modello un nome; qualcosa come punctuation.definition.comment.epydoc, per seguire la convenzione impostata in Java/JavaDoc.tmLanguage. Quindi, controlla il file di schema colori (che termina con .tmTheme) e assicurati che ci siano impostazioni per l'ambito che hai scelto - o per uno dei suoi genitori, poiché ST2 dovrebbe usare le regole di scoping appropriate per questo genere di cose.

Per utilizzare il file di sintassi creato, incollarlo in Packages/User (in modo che ST2 non lo sovrascriva sugli aggiornamenti), aprire un file Python nell'editor e quindi selezionare la nuova sintassi dall'elenco a discesa in l'angolo in basso a destra della finestra. Se hai impostato tutto correttamente, le stringhe di epydoc dovrebbero cambiare per essere il colore che hai impostato nella combinazione di colori.

Buona fortuna! E pubblica un link da qualche parte quando hai un file di sintassi che funziona, così anche altri possono vederlo e usarlo!

+7

Grazie al bit "inherit from source.python'" che mi mancava. Per essere un po 'più chiaro per i posteri - non sono sicuro che la tua risposta avrebbe avuto senso per me se non avessi già familiarizzato con il formato '.tmLanguage' - che significa mettere un" {"include": "source. python "}" nella matrice '' patterns "' del dizionario radice. Altrettanto importante, tutte le altre regole devono venire * prima * che la regola "ereditarietà", altrimenti non saranno abbinate prima. – Glyph

+5

Glyph, hai ancora il file di sintassi? In tal caso, potresti pubblicare un link in modo che io possa vedere cosa hai fatto per risolverlo? Grazie. –

Problemi correlati