ある日、いつも通り Sublime Text 3 でブログを書こうと WorkFlowy で作っていた下書きをコピペして、プレヴューをしようとするとエラー表示が出てプレヴューできなくなっていました。
404エラー表示
OmniMarkupPreviewer の便利な機能の一つであるプレヴュー機能は、マークダウン記法対応のブログエディタとして Sublime Text 3 を使うには必須の機能です。
最大の特徴は、レスポンスの良いリアルタイムプレヴューが可能になること。
通常であれば、「Preview Markup in Browser」をクリックすると、ブラウザにプレヴュー画面が現れるはずなのですが、ある時からブラウザにこのようなエラー表示が表示されるだけになってしまいました。
Error: 404 Not Found
Sorry, the requested URL 'http://127.0.0.1:51004/view/29' caused an error:
'buffer_id(29) is not valid (closed or unsupported file format)'
NOTE: If you run multiple instances of Sublime Text, you may want to adjust
the server_port option in order to get this plugin work again.
エラーが出始めたタイミングとしては、Sublime Text 3 の自動アップデートをしてからだと思われます。
対処方法
解決方法を調べてみるといたような症状になっている方がいるようで、解決方法を紹介されているサイトがいくつか見つかりました。
404 error on preview ... "buffer_id(29) is not valid (closed or unsupported file format)" #85 - Github
有名な GitHub にも同様のエラーに関するやり取りがありました。
今回はこちらを参考に対処しました。
質問者のエラー解決法の問いかけに寄せられた回答です。
2通りの方法を紹介されています。
両方とも文字装飾の機能の一つである ”打ち消し線” の機能に関するものですね。
どうやらこの機能が関係しているようです。
Remove Strikethrough Extension 打ち消し線機能を削除
”打ち消し線” の機能を削除する方法です。
本来 OmniMarkupPreviewer にある機能を、ユーザーセッティングで削除する方法です。
Sublime Text > Preferences > Package Settings > OmniMarkupPreviewer > Settings - User を開いて削除するためのコードを記入して保存します。
{
"renderer_options-MarkdownRenderer": {
"extensions": ["tables", "fenced_code", "codehilite"]
}
}
私の環境では、この方法では復旧しませんでした。
Fix the Strikethrough Extension 打ち消し線機能を修復
本来 OmniMarkupPreviewer が備えている打ち消し線機能の本体ファイルを編集してしまう方法です。
Mac 環境ですが、/Users/ユーザー名/Library/Application Support/Sublime Text 3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/mdx_strikeout.py のファイルを編集します。
設定ファイル本体をいじるので、バックアップは取っておいたほうが良いと思います。
ファイル内の最後の2行を編集します。
def makeExtension(*args, **kwargs):
return StrikeoutExtension(*args, **kwargs)
こちらの方法も、私の環境では復旧しませんでした。
最終的には、この方法でもとに戻るのですが、最初この方法を設定しただけでは、状況は変わらず大掛かりな対処方法を実施しました。
SublimeText 3 の再インストール
エラーが出て上記の方法を試してみましたが、状況が全く打開できないため、結局SublimeText 3 そのものを再インストールするという方法に踏み切りました。
インストールしている Package を調べる
使い始めてまだ日が浅く、ベテランプログラマーのような変態的な設定変更などしておらず、いくつか Package を入れているだけだったのが幸いでした。
まずは自分がインストールしている Package を調べます。SublimeText 3 を使い始めて、調べながら少しづつ追加していったので、記憶だけに頼ると漏れが出てきそうです。ここはしっかりと調べておきます。
Tools > Command Palette... を選択するか、⌘ + ⇧ + P を押して、コマンドパレットを開きます。
「Remove Package」を選択すると、いま入っている Package がすべて表示されるので、メモしておきます。
アンインストール
Mac アンインストールは、アプリケーションフォルダからアプリ本体を削除するだけと簡単なのですが、細かな設定ファイルや一時ファイルなどの関連ファイルが残りやすいです。
アンインストール専用のアプリを入れておくと、関連ファイルを全て自動検索して削除してくれるのでおすすめです。
私は The Unarchiver というアプリを使っています。
The Unarchiver
価格: 無料(記事公開時)
サイズ: 4.4 MB
カテゴリ: ユーティリティ
再インストール
再インストールと入っても、アプリを使って関連ファイルごと完全に消しているので、初めからインストールすることになります。
ついでなので、SublimeTextの最新版をダウロードし直してインストールします。
ブログエディタ用にSublime Text3をインストール
アプリのインストールが完了したら、PackageControll、メモしておいた Package を順次インストールして完了です。
図らずも最新版でクリーンインストールし直すことになりました。
肝心の OmniMarkupPreviewer のプレヴューを試す
再インストールでクリーンな状態になったはずの OmniMarkupPreviewer 、
リアルタイムプレヴュー機能を試してみますが、症状変わらずエラーを吐きます。
せっかくの再インストールが無駄になったかと思いましたが、復旧方法の2番め「Fix the Strikethrough Extension 打ち消し線機能を修復」を施して、無事プレヴュー機能が復活しました。
まとめ
当初の原因は、SublimeText 3 のオートアップデートがうまく終了せず、一部設定が読み込めないのかと思い再インストールに踏み切りましたが、私の環境では再インストールしただけでは治りませんでした。
結果として、再インストールと打ち消し線機能関係の設定ファイルをいじることで正常に表示されるようになりましたが、原因は定かではありません。
アップデート後に発生したことと、最新版の再インストールしただけでは機能しなかったことから、最新版の SublimeText と OmniMarkupPreviewer の相性が悪いということなのでしょうか。
そう言えば Package のアップデートって意識したことないのですが、入れ直したりしないといけないのでしょうか。
Sublime Text - Download
上野正大,杉本 淳,前川昌幸,森田 壮 インプレスジャパン 2014-03-20
WorkFlowy
価格: 無料(記事公開時)
サイズ: 2.4 MB
カテゴリ: 仕事効率化, ユーティリティ
The Unarchiver
価格: 無料(記事公開時)
サイズ: 4.4 MB
カテゴリ: ユーティリティ