risorse | scite
SciTE è un potente editor di testo libero, scritto da Neil Hodgson. Lo utilizzo regolarmente dal 2004.
SciTE è un editor altamente personalizzabile; qui è disponibile una configurazione per la versione 3.5.3. Le personalizzazioni riguardano in particolare:
Le personalizzazioni possono essere attivate copiando il contenuto di questa cartella nella cartella utente (quella indicata dalla variabile d'ambiente %USERPROFILE%, che di norma corrisponde a C:\Documents and settings\nome-utente in Windows 2000/XP, C:\Users\nome-utente in Windows Vista e successivi, nella cartella /home/nome-utente in Linux), preservando la struttura delle sotto-cartelle.
Trovo molto rilassante lo schema di colori Zenburn sviluppato da Jani Nurminen per Vim. Ho quindi deciso di configurare SciTE in modo che esibisse una livrea simile, ed il risultato è SciTE.theme.zenburn.properties. Il file va copiato nella cartella utente e incluso nel file SciTEUser.properties tramite la direttiva import SciTE.theme.zenburn
. Il file SciTEUser.properties, nella sua parte terminale, contiene le direttive per la colorazione di alcuni linguaggi, tra cui C/C++, Python, HTML/XML e SQL.
L'inclusione del file di definizione dello schema dei colori produce, come effetto collaterale, la definizione della variabile globale USE_CUSTOM_COLOURS
.
Uno schema di colori leggermente più contrastato che a volte uso in alternativa a Zenburn è Twilight; mi sono ispirato in partcolare alla versione sviluppata per Vim da Yoshimasa Niwa. Per abilitare il tema Twilight, copiare il file SciTE.theme.twilight.properties nella cartella utente, quindi sostituire la direttiva import SciTE.theme.zenburn
con import SciTE.theme.tiwlight
nel file SciTEUser.properties.
Solarized è una palette di colori sviluppada da Ethan Schoonover appositamente per la lettura su terminale. Per abilitare il tema, copiare il file SciTE.theme.solarized.properties nella cartella utente e impostare la direttiva import SciTE.theme.solarized
nel file SciTEUser.properties. La variabile USE_LIGHT_BACKGROUND consente di passare dalla modalità a sfondo chiaro (1) a quello scuro (0).
Mitchell Foral ha sviluppato un interessante sistema di snippets simile a quello disponibile in TextMate. Poiché tuttavia la sua implementazione ricorre a Ruby, io ne ho predisposta una basata su Python, che gli ho sottoposto e che lui ha reso disponibile per il download nell'area Files del gruppo Google SciTE-tools.
Dal sito di Mitchell:
Gli snippet sono memorizzati all'interno di una tabella. Uno scope è un indice numerico che identifica una classe di snippet che si applica ad un particolare lexer. Le stringhe che indicizzano le tabelle rappresentano il testo che attiva lo snippet. All'atto dell'attivazione dello snippet, tale stringa viene sostituita dallo snippet. Per esempio:snippets = { file = "$(FileNameExt)", [SCLEX_RUBY] = { ['def'] = "def ${1:initialize}(${2:})\n ${0}\nend" [SCE_RB_STRING] = { ['c'] = "#{${0}}" } } }Gli snippet privi di scope sono globali, gli snippet SCLEX_RUBY sono globali all'interno di un buffer contenente un file Ruby, mentre uno snippet SCLEX_RUBY SCE_RB_STRING può essere attivato all'interno di un buffer Ruby solo se il cursore si trova all'interno di una stringa. La sintassi prevede:
- segnaposti:
${num:testo}
(es.${1:ciao}
). I segnaposto sono visitati secondo l'ordine numerico; il segnaposto${0}
indica la posizione finale assunta dal cursore. Se tale posizione non viene specificata, il cursore verrà posizionato in fondo allo snippet;- cloni:
${num}
(es.${1}
). L'elemento${1}
viene sostituito con il testo inserito nel segnaposto${1:testo}
dell'esempio precedente. Le clonazioni vengono effettuate una volta passati al segnaposto successivo;- trasformazioni:
${num/testo/rimpiazzo/opzioni}
(es.${1/(ciao)/ti dico \\1/re.IGNORECASE}
). Le trasformazioni sono simili ai cloni, con la differenza che il testo originale viene trasformato per mezzo di un'espressione regolare. L'esempio citato, ad esempio, prevede la sostituzione la stringa "ciao" con "ti dico ciao". Le espressioni regolari sono normali re Python. È possibile anche richiamare codice Python nelle trasformazioni, racchiudendolo all'interno dei caratteri#{}
(es.${1/(ciao)/#{\\1.upper()}/})
;- variabili d'ambiente SciTE:
$(variabile)
(es.$(FileNameExt)
). La variabile specialeSelectedText
contiene il testo correntemente selezionato;- codice batch:
`comando`
(es.`date /t`
);- I caratteri $, /, }, e ` devono essere preceduti da un carattere di back-slash. Tenere a mente che si tratta comunque di stringhe Lua, quindi nelle stringhe letterali il carattere back-slash va raddoppiato, mentre nelle stringhe
[[ ]]
ne va specificato uno solo.
Le peculiarità dei due linguaggi mi ha costretto a modificare leggermente la sintassi per la definizione delle espressioni regolari utilizzabili negli snippet. In particolare, mentre in Ruby i gruppi sono identificati da un carattere dollaro seguito da un intero, e la numerazione inizia da 0, in Python i gruppi sono identificati da un back-slash seguito da un intero, a partire 1. Così, per esempio, la trasformazione ${1/text/other $0/}
va così riscritta: ${1/(text)/other \\1/}
.
Sono disponibili gli snippet per HTML sviluppati da Jani stesso, adattati per Python, oltre ad alcuni snippet sperimentali per C++.
Pagina modificata il 15/04/2015