はじめに
この記事は、UUUM Advent Calendar 2018 15日目です。
JavaScriptで関数型ゲームエンジンを作るよ!part1 を7日目にも書いたのでもしよければ
UUUM ではcssエンジニア
として真面目に働いています。
ギョームでは主にcssを書いたり、cssを動的にするためのスクリプトを書いたり、cssで装飾するためのデータを出力する処理を書いたり、cssを効率よく配布するためのインフラを整えたりしています。
最近Terminalが楽しい!
terminalにこもって遊ばなくちゃ...職場にきてコード書いてる場合じゃねえ by takeounn
カイシャのインフラの強い人にterminalの楽しみ方を教わって以来、インスタ映えするterminalの追及に業務の時間の大半を割いています。
terminalを見てるだけで無限に時間が溶けますね幸せ
今回は自分の .emacs.d
について書くよ
emacs歴: 3ヶ月くらい
repo: takeokunn/.emacs.d
emacsの用途としては、以下の2つです
- 設定ファイルをいじる
- Common Lispを書く
競技用プログラミングをちょこちょこ始めていて、Common Lispで書いています。
最低限上記を快適にできる設定さえあれば良いと思っております。
カイシャでemacs使ってる人自分以外にいないので自分が強くなるしかねぇ....
設定
;; ----- 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
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攻殻機動隊の紹介