V JavaScriptovém zvýrazňovači syntaxe JUSH jsem od začátku lpěl na sledování kontextu a jeho přepínání. Je to hezky vidět i u jednoduchého kódu <?php mysql_query("SET sql_mode = ''")
, kde jsou hned čtyři kontexty:
mysql_query
.SET
.sql_mode
.Sledují se prakticky všechny kontexty, které se u webových aplikací používají, namátkou:
<div style="color: black;" onclick="alert('');">
<meta http-equiv="Content-Type: text/html">
header("Content-Type: text/html")
mail("", "", "", "From:")
ini_set("display_errors", true)
SELECT NOW()
(podpora MySQL, SQLite, PostgreSQL a MS SQL)xmlhttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
(JavaScript)php_value display_errors On
(Apache)Kontextů je tolik, až si říkám, jestli jsou vlastně všechny potřeba. Jak chcete zvýraznit SQL nastavení uvnitř MySQL příkazu uvnitř PHP řetězce uvnitř HTML kódu? Hlavní výhoda tak spočívá ve vytvoření odkazů do patřičných dokumentací. Nevím jak vám, ale mě tyhle odkazy náramně pomáhají a ocenil bych je ve všech ukázkách kódu, které kde čtu.
Schopnost vytváření odkazů do patřičné dokumentace používám i při psaní článků. Když chci popsat funkci highlight_file
, tak jednoduše napíšu <code class="jush-php">highlight_file</code>
, čímž se odkaz sám vytvoří.
No ale ze všeho nejužitečnější by bylo mít tuto schopnost kontextového odkazování napojenou na nápovědu editoru. Tuto možnost JUSH také nově nabízí. Skript jush-help.wsf
pro Windows se používá snadno:
WScript jush-help.wsf filename line column [tabsize] [word]
Soubor prožene zvýrazněním syntaxe a pak se podívá, jestli je na dané pozici nějaký odkaz. Když ano, tak ho spustí, jinak alespoň nabídne hledání aktuálního slova v Google. To se mi ostatně často taky hodí – chci něco najít o slovu, které se v kódu používá třeba uvnitř řetězce. Napojení na editor SciTE je bezproblémové:
file.patterns.jush=*.htm;*.html;*.php;*.sql;*.js;*.css;php.ini;*.conf;.htaccess command.1.$(file.patterns.jush)=WScript jush-help.wsf "$(FilePath)" $(SelectionStartLine) $(SelectionStartColumn) $(tabsize) "$(CurrentWord)" command.name.1.$(file.patterns.jush)=JUSH help command.subsystem.1.$(file.patterns.jush)=2 command.save.before.1.$(file.patterns.jush)=1
Spuštění z příkazového řádku je fungl nové, takže uvítám jakékoliv připomínky. Když by se někomu chtělo kód přepsat do jiného běhového prostředí (např. Rhino), tak budu samozřejmě taky rád.
Diskuse je zrušena z důvodu spamu.