risorse | scite/markdown

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:

Prerequisites:

Optional packages:

SciTE setup

Workflow

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