$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

emacsのmodelineでどのファイルを開いているか分かりやすくする

mode lineを出来るだけ良くしたい

これまで

次の課題

解決案

 いろいろ調べていたら、以下のページが参考になった。

powerlineのカスタマイズ

 ひとまず https://github.com/milkypostman/powerline/blob/master/powerline-themes.el を参考に、自分用のthemeを作るのが早そうだった。

 powerline-default-themeを使ってたので、これをコピーし、powerline-my-themeにし、関数呼び出しをする。

(defun powerline-my-theme ()
  "Setup the my mode-line."
  (interactive)
  (setq-default mode-line-format
                '("%e"
                  (:eval
                   (let* ((active (powerline-selected-window-active))
                          (mode-line (if active 'mode-line 'mode-line-inactive))
                          (face1 (if active 'powerline-active1 'powerline-inactive1))
                          (face2 (if active 'powerline-active2 'powerline-inactive2))
                          (separator-left (intern (format "powerline-%s-%s"
                                                          powerline-default-separator
                                                          (car powerline-default-separator-dir))))
                          (separator-right (intern (format "powerline-%s-%s"
                                                           powerline-default-separator
                                                           (cdr powerline-default-separator-dir))))
                          (lhs (list (powerline-raw "%*" nil 'l)
                                     (powerline-buffer-size nil 'l)
                                     (powerline-raw mode-line-mule-info nil 'l)
                                     (powerline-buffer-id nil 'l)
                                     (when (and (boundp 'which-func-mode) which-func-mode)
                                       (powerline-raw which-func-format nil 'l))
                                     (powerline-raw " ")
                                     (funcall separator-left mode-line face1)
                                     (when (boundp 'erc-modified-channels-object)
                                       (powerline-raw erc-modified-channels-object face1 'l))
                                     (powerline-major-mode face1 'l)
                                     (powerline-process face1)
                                     (powerline-minor-modes face1 'l)
                                     (powerline-narrow face1 'l)
                                     (powerline-raw " " face1)
                                     (funcall separator-left face1 face2)
                                     (powerline-vc face2 'r)))
                          (rhs (list (powerline-raw global-mode-string face2 'r)
                                     (funcall separator-right face2 face1)
                                     (powerline-raw "%4l" face1 'l)
                                     (powerline-raw ":" face1 'l)
                                     (powerline-raw "%3c" face1 'r)
                                     (funcall separator-right face1 mode-line)
                                     (powerline-raw " ")
                                     (powerline-raw "%6p" nil 'r)
                                     (powerline-hud face2 face1))))
                     (concat (powerline-render lhs)
                             (powerline-fill face2 (powerline-width rhs))
                             (powerline-render rhs)))))))

(powerline-my-theme)

 あとはこの中身をいろいろ変えることでカスタマイズ出来る。

ディレクトリの情報を載せる

 Amit's Thoughts: Emacs: custom mode lineにかかれている通り、shorten-directoryという関数を定義しておくと便利。これを使って、先ほどのpowerline-my-themeを書き換える。

(defun shorten-directory (dir max-length)
  "Show up to `max-length' characters of a directory name `dir'."
  (let ((path (reverse (split-string (abbreviate-file-name dir) "/")))
        (output ""))
    (when (and path (equal "" (car path)))
      (setq path (cdr path)))
    (while (and path (< (length output) (- max-length 4)))
      (setq output (concat (car path) "/" output))
      (setq path (cdr path)))
    (when path
      (setq output (concat ".../" output)))
    output))

(defun powerline-my-theme ()
  "Setup the my mode-line."
  (interactive)
  (setq-default mode-line-format
                '("%e"
                  (:eval
                   (let* ((active (powerline-selected-window-active))
                          (mode-line (if active 'mode-line 'mode-line-inactive))
                          (face1 (if active 'powerline-active1 'powerline-inactive1))
                          (face2 (if active 'powerline-active2 'powerline-inactive2))
                          (separator-left (intern (format "powerline-%s-%s"
                                                          powerline-default-separator
                                                          (car powerline-default-separator-dir))))
                          (separator-right (intern (format "powerline-%s-%s"
                                                           powerline-default-separator
                                                           (cdr powerline-default-separator-dir))))
                          (lhs (list (powerline-raw "%*" nil 'l)
                                     (powerline-buffer-size nil 'l)
                                     (powerline-raw mode-line-mule-info nil 'l)
                                     ;;; !!! ここから書き換えた !!!
                                     (powerline-raw
                                      (shorten-directory default-directory 15)
                                      nil 'l)
                                     (powerline-buffer-id nil 'r)
                                     ;;; !!! ここまで書き換えた !!!
                                     (when (and (boundp 'which-func-mode) which-func-mode)
                                       (powerline-raw which-func-format nil 'l))
                                     (powerline-raw " ")
                                     (funcall separator-left mode-line face1)
                                     (when (boundp 'erc-modified-channels-object)
                                       (powerline-raw erc-modified-channels-object face1 'l))
                                     (powerline-major-mode face1 'l)
                                     (powerline-process face1)
                                     (powerline-minor-modes face1 'l)
                                     (powerline-narrow face1 'l)
                                     (powerline-raw " " face1)
                                     (funcall separator-left face1 face2)
                                     (powerline-vc face2 'r)))
                          (rhs (list (powerline-raw global-mode-string face2 'r)
                                     (funcall separator-right face2 face1)
                                     (powerline-raw "%4l" face1 'l)
                                     (powerline-raw ":" face1 'l)
                                     (powerline-raw "%3c" face1 'r)
                                     (funcall separator-right face1 mode-line)
                                     (powerline-raw " ")
                                     (powerline-raw "%6p" nil 'r)
                                     (powerline-hud face2 face1))))
                     (concat (powerline-render lhs)
                             (powerline-fill face2 (powerline-width rhs))
                             (powerline-render rhs)))))))

結果

多少分かりやすくなった。
f:id:shiba_yu36:20140401094225p:plain

まとめ

 modelineの情報が少し増えた。もっと情報が多いけど、簡潔なmodelineを作っていきたい。

ディズニーとかの映画で英語の勉強してる

 最近英語勉強してるけど、とにかく勉強したくない。とにかく勉強したくないから、なんか楽しみながら自然に身につけたい。


 どうしたらいいかなーと考えて、いろいろ試してみた。リスニングの勉強では結構有名なのはフレンズを見るって言うやつ。

 これは試してみたんだけど残念ながら一瞬で挫折した。なんか僕自身があんまりコメディ好きじゃなくてフレンズ自体を楽しめなかったというのと、なんか普通にそこそこ英語速かったからあんまり理解できなかった。英語速いの頑張って聞こうとすると勉強っぽくなってくる。


 いろいろ試した結果、ディズニーとかピクサーとかの名作アニメを英語字幕付きで見るのが今の自分にとっては良いことが分かった。

  • とにかく一直線のストーリーが多くて分かりやすい
    • なんか変なニュアンスみたいなのが少ない
    • キャラクターも悪役は悪そうな顔してて分かりやすい
  • 英語が簡単
    • やっぱり子供も見るからかあんまり難しい英語がない
    • 字幕あればなんとかなる

 今は適当に字幕見ながら普通に楽しんで、なんか分からない単語あったら止めて調べたりしながら見てる。


 あとこれに加えて、TSUTAYA DISCASが相性が良い。

 TSUTAYA DISCASっていうのはオンラインでTSUTAYAのレンタルできるやつで、適当に頼むと郵便で来て、返すときはポストに入れると返してくれる。DVDを借りるのとにかく面倒で外に出たくなくてどうするのが一番続くかなと考えた結果、これに入るのが一番良さそうだった。

 実際にディズニーとかピクサーとかの映画ほとんど旧作なので、http://www.discas.net/netdvd/dcp/guide/gidService.html#anc03 に書いてあるとおり、月額2000円くらいで無限に借りられる。


 これまで4本くらい見たけどどれも面白かったのでお勧め。


 それ以外の英語の会話の練習はLangrichってサイトでやってる。


 あとこれまで読んだおすすめの英語の本だけ紹介しておく。