risorse | scite/markdown
Quel che segue è l'adattamento del messaggio SciTE and Markdown che ho inviato alla mailing list scite-interest nel quale riporto alcuni risultati che ho ottenuto nella configurazione di SciTE per il supporto a markdown. L'originale in markdown è disponibile qui.
Markdown and SciTE
How to get a live preview (on Firefox) of a markdown file.
Environment:
- Windows 7 SP1 64 bit
- Python 2.6.6
- SciTE 3.3.1
Prerequisites:
Optional packages:
smarty pants, to emit typographically nicer (“curly”) quotes, proper (“em” and “en”) dashes, etc.;
del/ins, to support the
del
andins
tags;xhtml_wrap, to wrap the output in XHTML, optionally adding a title and a CSS URL.
SciTE setup
pick up a temporary folder to host the markdown previews, e.g.
%UserProfile%\.md
– put themarkdown.css
file of your choice here;define the following variables before the inclusion of the lua scripts in your
SciTEUser.properties
file:python.home=C:\Python26 python=$(python.home)\python.exe python.scripts.dir=$(python.home)\Scripts markdown.rendering.command=1121 markdown.rendering.dir=$(SciteUserHome)\.md markdown.rendering.file=$(markdown.rendering.dir)\$(FileName).html
to open the markdown preview on the default browser, add these lines:
command.build.subsystem.$(file.patterns.markdown)=2 command.build.$(file.patterns.markdown)="$(markdown.rendering.file)"
to render it automatically at save time:
add the following lines to your
SciTEUser.properties
file:file.patterns.markdown=*.md;*.markdown filter.markdown=Markdown (md markdown)|$(file.patterns.markdown)| command.name.21.$(file.patterns.markdown)= command.save.before.21.$(file.patterns.markdown)=2 command.21.$(file.patterns.markdown)=$(python.scripts.dir)\markdown_py.bat \ -x extra -x del_ins -x meta -x sane_lists -x smartypants -x toc -x wikilinks \ -x xhtml_wrap(title="",css_url="markdown.css",js_url="") \ -f "$(markdown.rendering.file)" "$(FilePath)" user.shortcuts=Ctrl+3|1121|
create a
markdown.lua
file in the same folder where yourSciTEStartup.lua
file lives, and copy the following lua fragment:function Render() if editor.LexerLanguage == "markdown" then scite.MenuCommand(tonumber(props["markdown.rendering.command"])) end end function OnSavePointReached() pcall(Render) return false end
add the following line to your
SciTEStartup.lua
file:require "markdown"
Workflow
Open an exisiting markdown file or begin with an empty, UTF-8 with BOM encoded file and write some markup text;
to start the preview, press F7: your default browser should open the temporary html preview file;
to refresh the preview, either:
save the markdown file in SciTE, then refresh the preview in the browser;
install an extension to let Firefox reload the modified file automatically – I currently use the Auto Reload extension, which monitors my
$(SciteUserHome)\.md
folder and reloads any file as it changes.Notes
1) being a lua newby, the
pcall(Render)
call catches the Editor pane is not accessible at this time error that occours at SciTE startup;2) could not find a better method than
scite.MenuCommand(tonumber(props["markdown.rendering.command"]))
to fire the markdown rendering procedure.
Aggiornamento [18/04/2013]
La versione 3.3.2 di Scite corregge un baco che causava una doppia chiamata OnSave, al quale al tempo avevo rimediato ricorrendo a OnSavePointReached. Ora è possibile avviare il rendering molto più semplicemente:
[file: markdown.lua] function OnSave() if editor.LexerLanguage == "markdown" then scite.MenuCommand(tonumber(props["markdown.rendering.command"])) end end
Aggiornamento [13/04/2015]
L'attivazione della live preview dei file markdown su Ubuntu 14.04 ha richiesto alcuni adattamenti a causa di alcune modifiche che nel tempo sono state introdotte nell'estensione. L'ambiente nel quale è avvenuta l'installazione comprende:
Sono stati installati i seguenti pacchetti (con pip):
Il pacchetto mdx_xhtml_wrap va invece scaricato direttamente da github (nella versione 0.1):
cd hg clone https://bitbucket.org/thinkstorm/xhtml_wrap cd xhtml_wrap sudo python setup.py install cd .. sudo rm -r xhtml_wrap
Non è necessario installare il pacchetto mdx_smartypants perché se ne fa carico direttamente il pacchetto principale Markdown, che offre altre interessanti estensioni come le note a piè pagina e le definition lists.
A partire dalla versione 2.6, il pacchetto Markdown non accetta più le configurazioni delle estensioni sulla riga di comando, che vanno invece passate su file YAML/JSON. La riga di comando diventa perciò:
$(python.scripts.dir)/markdown_py -c $(SciteUserHome)/.scite/markdown_py.json …
La configurazione in formato json è:
{ "mdx_xhtml_wrap": { "configs": [ ["title", ""], ["css_url", "md.css"], ["js_url", ""] ] } }
Il comando di caricamento del file html nel browser predefinito è diverso per le due piattaforme:
... if PLAT_WIN python=C:\Python26\pythonw.exe markdown.script=$(python.home)\Scripts\markdown_py.bat command.build.$(file.patterns.markdown)="$(markdown.rendering.file)" if PLAT_UNIX python=/usr/bin/python markdown.script=/usr/local/bin/markdown_py command.build.$(file.patterns.markdown)=x-www-browser $(markdown.rendering.file) & command.name.21.$(file.patterns.markdown)= command.save.before.21.$(file.patterns.markdown)=2 command.21.$(file.patterns.markdown)=$(markdown.script) \ -c $(SciteUserHome)/.scite/markdown_py.json -x mdx_xhtml_wrap -x mdx_del_ins -x mdx_cite -x markdown.extensions.extra -x markdown.extensions.meta \ -x markdown.extensions.sane_lists -x markdown.extensions.smarty \ -x markdown.extensions.toc -x markdown.extensions.wikilinks \ -f "$(markdown.rendering.file)" "$(FilePath)" user.shortcuts=Ctrl+3|1121|
Nota 1: l'estensione markdown.extensions.toc funziona solo con Python 2.7 e versioni successive: tale opzione va rimossa nel caso si usi una versione precedente.
Nota 2: le estensioni mdx_ins_del e mdx_cite generano un DeprecationWarning che però non pregiudica la conversione.
Aggiornamento [20/05/2015]
Firefox ha qualche problema a renderizzare pagine HTML codificate UTF-8 se questa non è esplicitamente dichiarata nell'apposito nodo meta. Poiché l'estensione mdx_xhtml_wrap non lo fa, conviene, prima di installarla, applicare questa patch (o, alternativamente, agire direttamente sui sorgenti già installati).
Aggiornamento [11/12/2018]
Una recente installazione del pacchetto Markdown (v. 3.0.1) ha evidenziato un problema di compatibilità con alcune estensioni di terze parti, mdx_ins_del e mdx_cite in particolare. Il problema si risolve modificando il metodo makeExtension nei file sorgente presenti nella cartella site-packages:
[file mdx_cite.py] ... def makeExtension(configs={}**kwargs): return CiteExtension(configs=dict(configs)**kwargs) ...
[file mdx_del_ins.py] ... def makeExtension(configs={}**kwargs): return DelInsExtension(configs=dict(configs)**kwargs) ...
Pagina modificata l'11/12/2018