pygments style solarized v0.1.1 リリースしました

昨年のPyConJP2012の直後にリリースしてから放置状態になっていたパッケージに対して、海外の方々からissueを貰ったり、pull requestが来たりしていたので、流れでリリースまでやってしまいました。

なんていうパッケージ?

pygments-style-solarized といいます。

pygments-style-solarizedPygments の拡張モジュールです。 Pygments はPythonで書かれたシンタックスハイライタで、ドキュメントツールSphinx でも利用しているのでどこかでご覧なったことがある人も多いと思います。

Pygments は組み込みで幾つかのスタイルを持っていますが、拡張のためのインターフェースを持っているので自分の好みのスタイルを作ることができます。 pygments-style-solarized もそうして作ったモジュールの一つです。

どんな感じなの?

実際にハイライトされたコードを見てみましょう。 なお、サンプルのコードに特に意味はありません。

Python:

def uint32_to_native_hex(value):
    """ pack unsigned int as native bytes, and unpack as hex. """
    if sys.byteorder == 'big':
        ORDER_MARK = '>'  # big endian
    else:
        ORDER_MARK = '<'  # little endian
    fmt_uint = ORDER_MARK + 'I'
    return hexlify(pack(fmt_uint, value))


def int_to_hex(value, octets=2):
    """ hex representation as network order with size of ``octets``
    ex) int_to_hex(1)     # => "0001"
        int_to_hex(32, 4) # => "00000020"
    """
    return ('%%0%dx' % (octets * 2)) % value


def ipv4_to_hex(ip_address):
    return ''.join([int_to_hex(int(i), 1) for i in ip_address.split('.')])

Emacs lisp:

;; Library Paths
(defun add-to-load-path (&rest paths)
  (let (path)
    (dolist (path paths paths)
      (let ((default-directory (expand-file-name
                                (concat user-emacs-directory path))))
    (add-to-list 'load-path default-directory)
    (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
        (normal-top-level-add-subdirs-to-load-path))))))

;; add-to-load-path
(add-to-load-path "conf" "elisp")

;; require Common-Lisp functions.
(require 'cl)

Solarized にはlightとdarkの2つのカラースキームがあります。淡く明るい背景色をベースに配色を組み立てたlightと濃く暗い背景色をベースにしたdarkです。 これはdarkと呼ばれるカラースキームになります。

どうすれば使える?

Pygments を使用する際に、 pygments-style-solarized も一緒にインストールしてもらえれば、あとは Pygments のスタイルで solarizedlight または solarizeddark を指定するだけで使えます。

Sphinx で利用する場合も同様で、 pygments-style-solarized をインストールしておき、ドキュメントプロジェクトのconf.pyに次のように記述すればOKです:

pygments_style = "solarizedlight"

v0.1.1 での変更点は?

恥ずかしながら、typoの修正のみです。

2点修正があり、ひとつはスタイルクラスのコメントの誤りの修正です。 こちらは issue を登録してもらいました。

もうひとつはスタイル定義の中で色を指定する16進数のtypoで、こちらはpull request を頂きました。

おかげ様でようやく正しい色調で表示できることと、相成りました。はい。

今後は?

少し申し訳ない気もしますが、自分の手で積極的に修正をしていくつもりはありません。

ですが、元々思いつきで作ってみたものなので、配色のバランスなどで意に沿わない部分がある人もいるかと思います。vimやらemacsやらのエディタ向けに配布されているテーマと比較すると、配色が異なる部分が気になることもあるでしょう。

そんな時は「自分ならこうする」というアイデアを、ぜひpull requestの形で見せて頂ければと思います。