自分の .emacs.d について書くよ

## はじめに
この記事は、[UUUM Advent Calendar 2018](https://qiita.com/advent-calendar/2018/uuum) 15日目です。
[JavaScriptで関数型ゲームエンジンを作るよ！part1](https://qiita.com/takeokunnn/items/fbff10849dffe0e224a6) を7日目にも書いたのでもしよければ

[UUUM](https://www.uuum.jp/) では`cssエンジニア`として真面目に働いています。

ギョームでは主にcssを書いたり、cssを動的にするためのスクリプトを書いたり、cssで装飾するためのデータを出力する処理を書いたり、cssを効率よく配布するためのインフラを整えたりしています。

## 最近Terminalが楽しい！

> terminalにこもって遊ばなくちゃ...職場にきてコード書いてる場合じゃねえ by takeounn

カイシャのインフラの強い人にterminalの楽しみ方を教わって以来、インスタ映えするterminalの追及に業務の時間の大半を割いています。

terminalを見てるだけで無限に時間が溶けますね幸せ

<img width="1440" alt="スクリーンショット 2018-12-15 14.21.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/125325/e0273e46-91ca-630c-efe6-1485750b8695.png">

## 今回は自分の `.emacs.d` について書くよ

emacs歴: 3ヶ月くらい
repo: [takeokunn/.emacs.d](https://github.com/takeokunn/.emacs.d)

emacsの用途としては、以下の２つです

* 設定ファイルをいじる
* Common Lispを書く

競技用プログラミングをちょこちょこ始めていて、Common Lispで書いています。
最低限上記を快適にできる設定さえあれば良いと思っております。

カイシャでemacs使ってる人自分以外にいないので自分が強くなるしかねぇ....

## 設定

```emacs-lisp:.emacs.d/init.el
;; ----- initialize ------ ;;

(add-to-list 'load-path (expand-file-name "~/.emacs.d/site-lisp"))

;; ----- theme ----- ;;

(load-theme 'tango-dark)

;; ----- config ------ ;;

;; initial view
(setq inhibit-startup-message t)

;; white space
(setq-default show-trailing-whitespace t)

;; editor bar
(menu-bar-mode -1)
(tool-bar-mode -1)
(global-linum-mode t)

;; auto generate file
(setq make-backup-files nil)
(setq auto-save-default nil)
(setq auto-save-list-file-prefix nil)

;; delete a line with C-k
(setq kill-whole-line t)

;; ignore ring bell
(setq ring-bell-function 'ignore)

;; highlight
(show-paren-mode t)
(setq show-paren-style 'mixed)

;; ----- keybind ----- ;;

(define-key global-map (kbd "C-z") 'undo)
(define-key global-map (kbd "C-m") 'set-mark-command)


;; ----- package ----- ;;

(package-initialize)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)

;; transpose-frame
(require 'transpose-frame)

;; auto-complete
(require 'auto-complete-config)
(ac-config-default)

;; drill-instructor
(require 'drill-instructor)
(setq drill-instructor-global t)

;; neotree
(require 'neotree)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))

;; move-text
(require 'move-text)

;; smooth-scroll
(require 'smooth-scroll)

;; ----- Lisp ----- ;;

;; slime
(load (expand-file-name "~/quicklisp/slime-helper.el"))
(setq inferior-lisp-program "sbcl")

;; ac-slime
(require 'ac-slime)
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)

;; paredit
(require 'paredit)
(autoload 'enable-paredit-mode "paredit" t)
(add-hook 'emacs-lisp-mode-hook 'enable-paredit-mode)
(add-hook 'lisp-mode-hook 'enable-paredit-mode)
(add-hook 'lisp-interaction-mode-hook 'enable-paredit-mode)
(add-hook 'scheme-mode-hook 'enable-paredit-mode)
(eval-after-load "paredit"
  #'(define-key paredit-mode-map (kbd "C-c f") 'paredit-forward-slurp-sexp))
(eval-after-load "paredit"
  #'(define-key paredit-mode-map (kbd "C-c b") 'paredit-forward-barf-sexp))

;; rainbow-delimiters
(require 'rainbow-delimiters)
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
```

## 簡単な解説

* 鬼軍曹.el
Emacsの代表的なキーバインドを強制することができるツール。矢印キーを叩くと怒られます。
[[Emacs] キーバインドを強制するパッケージ 鬼軍曹.el のご紹介]
(https://dev.classmethod.jp/tool/emacs-drill-instructor/)

* slime
`sbcl`などのcompilerに即時でコードをcompile/execできる
`<C-c><C-c>` でcompileできるの最高すぎる

* paredit
カッコの入力を楽にしてくれるplugin
`飲み込む/吐き出す` があんまり理解できいないんだよなぁ....

## [余談] ChromemacsでChromeもEmacs化

Chromeでもemacs keybind使えるpluginを見つけてしまいました。
[https://chrome.google.com/webstore/detail/chromemacs/kfdibhbheajeacnkkakomaliggbgndcf](https://chrome.google.com/webstore/detail/chromemacs/kfdibhbheajeacnkkakomaliggbgndcf)

Custom key mappings は以下のように設定しました。

```shell
# Insert your preferred key mappings here.
map <c-e> scrollPageUp
map <c-g><c-w> removeTab
map <c-g><left> goBack
map <c-g><right> goForward
```

これでネットサーフィン捗りますね。

## 最後に

この `emacs plugin` 入れると便利だよ!みたいなのあればコメントで教えてください超喜びます。まだ思考のスピードで編集できないのでもっともっとやり込みたいですね。

UUUMではオシャレなterminalを作れるエンジニアを募集してるらしいです。
詳しくはこちら　→→→→→→　[UUUM攻殻機動隊の紹介](http://system.blog.uuum.jp/entry/2018/12/01/132950)