Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Emacsでもしゃれた画面でプログラミングがしたい!!

More than 3 years have passed since last update.

Emacsを使っていると、使い心地はいいんだけどどうしても見た目がおしゃれじゃないというか、やっぱりテキストベースな分、現代風のテキストエディタより見た目が古臭いのが気になる人がいると思います。そんな人達のためにEmacsで自分がしている画面カスタマイズを晒したいと思います。ちなみに自分のEmacsはこんな感じです。

emacs170311.png

使っているパッケージ

カスタマイズと言ってもほとんどは既存のパッケージを使わせてもらっているだけです。

atom-one-dark-theme

atom-one-dark-theme - github

自分はEmacsを使い始める前はAtomを使っていて、そのテーマが気に入っていたのでEmacsでそれを再現できるこちらのテーマを使っています。helmやundo-treeなど主要なパッケージの色も一括で設定できるようになっているのでおすすめです。使い方はパスの通ったディレクトリに置いてinit.elに一行追加するだけです。

init.el
(load-theme 'atom-one-dark t)

powerline

powerline - github

Emacsのデフォルトのモードラインってめちゃくちゃダサくないですか?Vimはフォントにパッチ当ててまで頑張ってるのにEmacsの記事を見てるとあんまり気にしてない人が多そうだし、その分モードラインのカスタマイズに関する記事が少ない気がします。EmacsだってVimみたいにかっこいいpowerlineが使いたい!という人はみんなの味方、powerline.elを入れておきましょう。
ちなみにVimのpowerlineとEmacsのpowerlineは微妙に実装方法が違っているようで、Emacsのpowerlineは矢印の三角部分の表示がおかしくなることが多いです。これについては今後時間があるときにしっかり書きたいと思います。

2017/03/12 追記:書きました 
⇢ Emacsのpowerline.elの不具合を解消する
とりあえず自分の設定はこんな感じです。

init.el
(require 'powerline)

(defun powerline-my-theme ()
  "Setup the my mode-line."
  (interactive)
  (setq powerline-current-separator 'utf-8)
  (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 'mode-line-1-fg 'mode-line-2-fg))
                          (face2 (if active 'mode-line-1-arrow 'mode-line-2-arrow))
                          (separator-left (intern (format "powerline-%s-%s"
                                                          (powerline-current-separator)
                                                          (car powerline-default-separator-dir))))
                          (lhs (list (powerline-raw " " face1)
                                     (powerline-major-mode face1)
                                     (powerline-raw " " face1)
                                     (funcall separator-left face1 face2)
                                     (powerline-buffer-id nil )
                                     (powerline-raw " [ ")
                                     (powerline-raw mode-line-mule-info nil)
                                     (powerline-raw "%*")
                                     (powerline-raw " |")
                                     (powerline-process nil)
                                     (powerline-vc)
                                     (powerline-raw " ]")
                                     ))
                          (rhs (list (powerline-raw "%4l")
                                     (powerline-raw ":")
                                     (powerline-raw "%2c")
                                     (powerline-raw " | ")                                  
                                     (powerline-raw "%6p")
                                     (powerline-raw " ")
                                     )))
                     (concat (powerline-render lhs)
                             (powerline-fill nil (powerline-width rhs)) 
                             (powerline-render rhs)))))))

(defun make/set-face (face-name fg-color bg-color weight)
  (make-face face-name)
  (set-face-attribute face-name nil
                      :foreground fg-color :background bg-color :box nil :weight weight))
(make/set-face 'mode-line-1-fg "#282C34" "#EF8300" 'bold)
(make/set-face 'mode-line-2-fg "#AAAAAA" "#2F343D" 'bold)
(make/set-face 'mode-line-1-arrow  "#AAAAAA" "#3E4451" 'bold)
(make/set-face 'mode-line-2-arrow  "#AAAAAA" "#3E4451" 'bold)

(powerline-my-theme)

2017/07/09 追記:stakemori様よりご指摘をいただき修正しました。

rainbow-delimeters

rainbow-delimeters

括弧の色を階層別にカラフルにしてくれるパッケージです。対応した括弧がないと黒く表示されるので、括弧の閉じ忘れがなくなります。デフォルトだと隣り合う括弧の色味が近かったりしてわかりづらいので、自分のカラーテーマに合わせて変更すると幸せになれると思います。
ちなみにこのパッケージは専用の設定画面が用意されているので、そちらを使ってカスタマイズしましょう。起動方法は以下のコマンドを入力するだけです。

M-x customize-group rainbow-delimiters

その他

モードラインで使用中のマイナーモードを見られるようにしたい人はこちらの記事(mode-lineのモード情報をコンパクトに表示する)のようにすると長ったらしくなりすぎなくていいと思います。自分はマイナーモードが見える利点があまり感じられなかったので(有効利用している人は使い方をコメントで教えてください)非表示にしています。左側に行番号表示がしたい人は標準のlinum-modeよりnlinum-modeの方が軽量のようです。自分の環境ではなぜかうまく表示できませんでした。

とりあえず以上のような設定をすれば新しいエディタから来た人も満足できるのではないでしょうか。古いエディタなのでその分どうしてもアニメーションができるAtomなどには及びませんが、気にならないくらいの差になったと思います。

itome
cyberagent
サイバーエージェントは「21世紀を代表する会社を創る」をビジョンに掲げ、インターネットテレビ局「AbemaTV」の運営や国内トップシェアを誇るインターネット広告事業を展開しています。インターネット産業の変化に合わせ新規事業を生み出しながら事業拡大を続けています。
http://www.cyberagent.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away