OmniMarkupPreviewerでプレビューできない場合の対処法


症状

OmniMarkupPreviewerでプレビューするとブラウザに下記のようなエラーが表示される場合の対処法です。Windows10へsublime text3をインストールし、OmniMarkupPreviewerをインストールしていざCtrl+Alt+Oでプレビューしようとすると、起動したブラウザに下記のようなエラーが発生しました。この記事では下記エラーの対処法を記載致します。

環境

  • OS Windows10 Home x64

  • Sublime Text3 build 3114 x64

  • Syntax Markdown Extended

  • OmniMarkupPreviewer v3.0.0

対処方法

/Users/ユーザ名/AppData/Roaming/Sublime Text 3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/にある mdx_strikeout.py の一部を下記のように書き換えるとプレビューできました。ファイルを変更後は一度sublimeを再起動してください。

変更前

def makeExtension(configs=None):
    return StrikeoutExtension(configs=configs)

変更後

def makeExtension(*args, **kwargs):
    return StrikeoutExtension(*args, **kwargs)

参考サイト

経緯

 これまでOmniMarkupPreviewerを起動しようとすると上記のようなエラーが出ていたため、sublimeで書いてプレビューはChromeのエクステンション Markdown Preview Plusを使っていましたが、utf8で書くと毎回起動時に文字コードをsjisからuft8へ変更しないと文字化けしていたり、編集してはリロードしてプレビューしたりと、昔のTeXのような使い方で使っていました。以前から解決方法を探していたのですが、見つからなかったため自分の環境だけの問題なのかもしれないと思い放置していました。たまたま時間ができましたのでじっくり弄ってみたところ、偶然にも解決に至りました。リアルタイムのプレビューはいいですね。utf8で書いたものも文字化けせずに読めます。

 まず最初に、エラーで表示されている指示通りserver_portを変えてみるところから始めました。ポート番号を変えても変化はありません。そこで、Sublime Text > Preferences > Package Settings > OmniMarkupPreviewer > Settings-Userの設定ファイルを眺めていると、Rendererという項目に注目しました。エラーの中でunsupported file formatと記載されているところがあったと思い出してこのRender部を弄ってみると「renderer_options-MarkdownRenderer」の「extensions」そのものを消すとプレビューができるようになりました。そこで、デフォルトにあった「"tables", "strikeout", "fenced_code", "codehilite"」を順に消していくと、"strikeout"が原因であることが分かりました。

 "strikeout"を削除するとプレビューはできるようになったのですが、"strikeout"は取り消し線の表示のため、~~取り消し線を引きたい~~と、チルダがそのまま表示されてしまうために見栄えがよろしくありません。そこで、エラーの原因となる箇所が分かったことで検索でより詳細に調べてみたところ、同様の問題を抱えている方がおられることが分かるとともに、具体的な対処方法がありました。上記の対処法はこちらで議論をされていた内容です。やはり、strikeoutが問題だったようですが、議論にあるように具体的なコードの修正箇所までは到達できませんでした。提示されている対処法の通りにmdx_strikeout.pyを修正したところ、私の環境では取り消し線も問題なく表示されました。この違いは何を意味するのか残念ながら私には分かりません。もしもわかる方がおられましたらご教授いただけますと嬉しいです。海外では上記のような問題の議論があったようですが、国内ではこのような対処法を見つけることができませんでしたのでもしも同様の問題で困っている方がおられるのならこの内容がお役に立てばと投稿しました。