Sublime Text3でコードポイントを表示するプラグイン作ってみた
機能
UnicodeとUTF-8のコードポイントを表示する。
SJISとEUC-JPも欲しいって?
それはね・・・後述します・・・。
2014/03/25追記
sjis, euc-jp対応版があるので、使いたい人はそちらがおすすめ。
Sublime Text3でコードポイントを表示するプラグイン作ってみた(sjis対応版) - Tips
os x 10.9.2、sublime text3のみ動作確認済み。
コード
code_point.py
import sublime, sublime_plugin class CodePointCommand(sublime_plugin.TextCommand): def run(self, edit): pos = self.view.sel()[0].begin() c = self.view.substr(pos) d = [ ("UTF-8:\t\t", "".join([hex(x)[2:] for x in c.encode('utf-8')]).upper()), ("Unicode:\t", hex(ord(c)).upper()[2:]) ] text = "Sample:\t" + c + "\n\n" \ + "".join([x[0] + "0x" + x[1] + "\n" for x in d]) sublime.message_dialog(text)
使い方
スクリプトを保存
/Users/anonymous/Library/Application Support/Sublime Text 3/Packages/
に、適当な名前でディレクトリを作ります。
anonymousの箇所はアカウント名です。
kaeroukaというディレクトリにしておきます。
ソースをcode_point.pyとして
/Users/anonymous/Library/Application Support/Sublime Text 3/Packages/kaerouka
に保存します。
愚痴
ほんとはSJISくらいは表示したかったんだけど、できなかったんだよねー。
c.encode('utf-8')
は、問題ない。
c.encode('sjis')
は、エラーになる。
エラーの内容はこれ。
LookupError: unknown encoding: shift_jis
なぜか?
Sublime TextのPythonのインタプリタって、OSにインストール済みのPython使ってるわけじゃなくて
組み込みのやつなんだってさ。
しかも、独自ビルドしてるっぽくて、JapaneseCodecs入れてないみたいなのね。
JapaneseCodecsはずいぶん昔のバージョンで本家に組み込まれたはずなんだけど、Sublime Textに組み込まれてるPythonのインタプリタには入ってないみたい。
悲しい・・・。
でもSublime Text3はベースをPython2からPython3にしたみたいだし、そのうち日本語周りもマシになるんじゃないかなーと期待してる。
2014/03/16 追記
sublime textでsjisを扱う場合、convertToUTF8ってゆうプラグイン使うけど、
sublime test3の場合、Codecs33なるパッケージも一緒に入れる。
こいつ使えばsjisもいけちゃう・・・?
sjisガー!sjisガー!って言ってるけど、実際エンコードで指定するのはcp932だけども。
もう1個愚痴。
このソース
d = [ ("UTF-8:\t\t", "".join([hex(x)[2:] for x in c.encode('utf-8')]).upper()), ("Unicode:\t", hex(ord(c)).upper()[2:]) ]
このソースで、項目名に当たるところに「:\t\t」とかベタ打ちしてあるけど、これにも残念な理由があって
プロポーショナルフォント使ってるから、
c.ljust(20)
とかやってもずれるんだよね。
なんかいい解決方法ないかな〜(チラッ