Edited at
UUUMDay 15

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


はじめに

この記事は、UUUM Advent Calendar 2018 15日目です。

JavaScriptで関数型ゲームエンジンを作るよ!part1 を7日目にも書いたのでもしよければ

UUUM ではcssエンジニアとして真面目に働いています。

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


最近Terminalが楽しい!


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


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

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

スクリーンショット 2018-12-15 14.21.14.png


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

emacs歴: 3ヶ月くらい

repo: takeokunn/.emacs.d

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


  • 設定ファイルをいじる

  • Common Lispを書く

競技用プログラミングをちょこちょこ始めていて、Common Lispで書いています。

最低限上記を快適にできる設定さえあれば良いと思っております。

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


設定


.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 のご紹介


  • 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

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

# 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攻殻機動隊の紹介