Friday, September 02, 2011

bm.el の色の設定を変更してみた

背景

以前、bm.el をインストールした訳だが、デフォルトの色がちょっと見にくかったので変更してみた。

【参考】自分のための日記: bm.el を入れてみた

環境

  • Mac OS X Version 10.6.7
  • GNU Emacs 22.3.1 (i386-apple-darwin9.8.0, Carbon Version 1.6.0) of 2010-01-09 on gs674-seijiz.local
  • bm.el,v 1.55


デフォルトの色

デフォルトの色は、こんな感じ。文字の色は白で、背景は紺っぽい色。


文字の色が単色であれば、そんなに問題ないようにも思えるが、ソースコードなどは型名、クラス名、メソッド名、リターンタイプ、予約語などは色付けされているので、紺だとちょっと色が強すぎる気が。。。あと、文字色がすべて白になってしまうのも、ソースコードを読むとき、コーディングしているときに見づらいと思った。

デフォルトの色の変更

bm.el 内で color で検索したら、この辺が出てきた。

    (((class color)
      (background light)) (:foreground "White" :background "DarkOrange1"))
    (((class color)
      (background dark))  (:foreground "Black" :background "DarkOrange1")))

    (((class color)
      (background light)) (:foreground "White" :background "DarkBlue"))
    (((class color)
      (background dark))  (:foreground "White" :background "DarkBlue")))

    (((class color)
      (background light)) (:foreground "White" :background "DarkOrange1"))
    (((class color)
      (background dark))  (:foreground "Black" :background "DarkOrange1")))

    (((class color)
      (background light)) (:foreground "White" :background "DarkBlue"))
    (((class color)
      (background dark))  (:foreground "White" :background "DarkBlue")))

bm-persistent-face, bm-fringe-persistent-face に設定されている以下の色が怪しい、と思った。

(:foreground "White" :background "DarkBlue")

自分のバックグラウンドは白で明るいので (background light)の行を変更する。という訳で、399行と434行の設定を以下のように変更してみた。

  • 変更前
          (background light)) (:foreground "White" :background "DarkBlue"))
  • 変更後
          (background light)) (:background "LightGreen"))


設定を変更して、Emacs を再起動。


すると、何も変わらなかった。。。

Σ(゚Д゚;)ガーーーン!

よくよく bm.el のある ~/.emacs.d/auto-install ディレクトリを見ると、bm.elc ファイルがある。という訳で、bm.el をバイトコンパイル。

M-x byte-compile-file[Enter]
~/.emacs.d/auto-install/bm.el

そして、Emacs を再起動。

すると、ブックマークの色が期待した色になりましたー!

(・∀・)!


こちらの方が、foreground のカラーは維持されるし、background のカラーもどぎつくないので、断然見やすいのではないでしょうか?

因みに、今回は bm-persistent-face, bm-fringe-persistent-face の両方を変更しましたが、bm-persistent-face を変更するだけで、所望の結果が得られることが分かりました。lisp の書き方が分からないので、emacs の設定をするときは毎回「トライ&エラー」なのが悲しいところ。。。


(´・ω・`)

2 comments:

  1. bm.el を変更せずに init.el で変更するなら、

    (require 'bm)
    (set-face-background 'bm-face "LightGreen")

    でも ok かと。

    ReplyDelete
  2. コメント、どうもありがとうございます!!

    教えて頂いたものを init.el に記述してみましたが、変更されませんでした。。。

    (require 'bm)
    (set-face-background 'bm-persistent-face "LightGreen")

    とすることで、背景色が LightGreen になることを確認しました!!

    しかし、この方法だと、背景色は LightGreen なのですが、文字の色が白色になってしまいます。

    元の文字の色を維持できるよう、

    (set-face-foreground 'bm-persistent-face "")

    という記述をしてみましたが、

    error: Empty foreground color value,

    というエラーが出て、変更出来ませんでした。

    デフォルトの文字色を維持できるよう、もう少し探ってみます。

    ありがとうございます。

    ReplyDelete