長年使ってきたMacBookPro Mid2010
からMacBookAir2018
に買い替えました。
きっかけがないとなかなか設定を見直さないため、何年ぶりかに実施です。
これまでは下記のようにパッケージごとに設定ファイルを分けてきたのですが、そこまでこだわった使い方をしていないため、init.elにまとめることにしました。
こだわりの設定し始めたらファイル分けたほうがいいのかもしれませんが、個人的にはスッキリして満足です。
起動時間もそこまで気になるほどじゃないのでuse-package
も使わずにいきます。
init.el
./inits/
├── 01_basic.el
└── 02_helm.el
└── 03_recentf.el
Emacs
straight.el
パッケージマネージャです。
init.el
にstraight-use-package
を書くだけでパッケージのインストールまで完了します。
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
参考:Emacsパッケージマネージャ決定版:これからのパッケージ管理はstraight.elで決まり!
helm
(straight-use-package 'helm)
(helm-mode 1)
(define-key global-map (kbd "M-y") 'helm-show-kill-ring)
(define-key global-map (kbd "C-x C-f") 'helm-find-files)
(define-key global-map (kbd "C-x C-r") 'helm-recentf)
(define-key helm-map (kbd "C-h") 'helm-ff-delete-char-backward)
(define-key helm-find-files-map (kbd "TAB") 'helm-execute-persistent-action)
個人的な慣れの問題からC-h
とTAB
を定義してます。
参考:Emacs に革命を起こすパッケージ「helm」
recentf-ext
最近開いたファイルを一覧で表示してくれる。
すごいよく使う機能。
C-x C-r
に設定してます。
(straight-use-package 'recentf-ext)
(recentf-mode 1)
(setq recentf-max-saved-items 200)
(setq recentf-save-file "~/.emacs.d/recentf")
(setq recentf-auto-cleanup 'never)
(setq helm-for-files-preferred-list
'(helm-source-buffers-list
helm-source-recentf
helm-source-bookmarks
helm-source-file-cache
helm-source-files-in-current-dir
helm-source-bookmark-set
helm-source-locate))
company
補完用パッケージ。
(straight-use-package 'company)
(global-company-mode)
(setq company-transformers '(company-sort-by-backend-importance))
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 3)
(setq company-selection-wrap-around t)
(setq completion-ignore-case t)
(setq company-dabbrev-downcase nil)
(global-set-key (kbd "C-M-i") 'company-complete)
(define-key company-active-map (kbd "C-n") 'company-select-next)
(define-key company-active-map (kbd "C-p") 'company-select-previous)
(define-key company-search-map (kbd "C-n") 'company-select-next)
(define-key company-search-map (kbd "C-p") 'company-select-previous)
(define-key company-active-map (kbd "C-s") 'company-filter-candidates)
(define-key company-active-map (kbd "C-i") 'company-complete-selection)
(define-key company-active-map [tab] 'company-complete-selection)
(define-key company-active-map (kbd "C-f") 'company-complete-selection)
(define-key emacs-lisp-mode-map (kbd "C-M-i") 'company-complete)
web-mode
HTML書くとき用。
(straight-use-package 'web-mode)
(add-to-list 'auto-mode-alist '("\\.html\\'" . web-mode))
(defun web-mode-hook ()
(setq web-mode-html-offset 2)
(setq web-mode-css-offset 2)
(setq web-mode-script-offset 2)
(setq indent-tabs-mode nil)
(setq tab-width 2))
(add-hook 'web-mode-hook 'web-mode-hook)
php-mode
PHP書くとき用。補完にcompany-php
入れてます。
(straight-use-package 'php-mode)
(straight-use-package 'company-php)
(add-hook 'php-mode-hook
'(lambda ()
(company-mode t)
(ac-php-core-eldoc-setup)
(make-local-variable 'company-backends)
(add-to-list 'company-backends 'company-ac-php-backend)))
js2-mode
js書くとき用。補完にcompany-tern
入れてます。
(straight-use-package 'js2-mode)
(straight-use-package 'company-tern)
(add-to-list 'auto-mode-alist '("\\.js\\'" . js2-mode))
(add-hook 'js2-mode-hook 'tern-mode)
(add-to-list 'company-backends 'company-tern)
別途ternをインストールする必要があります。
npm install -g tern
screenshot
flycheck
シンタックスチェック用。
(straight-use-package 'flycheck)
(add-hook 'after-init-hook #'global-flycheck-mode)
migemo
日本語インクリメンタルサーチ。
(straight-use-package 'migemo)
(straight-use-package 'helm-migemo)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))
(setq migemo-dictionary "/usr/local/Cellar/cmigemo/20110227/share/migemo/utf-8/migemo-dict")
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(load-library "migemo")
(migemo-init)
参考:migemo.el : ローマ字で日本語検索する神ツールMigemoが更新されたよ!
swiper + migemo
isearchを一覧でだしてくれる。+日本語対応。
(global-set-key "\C-s" 'swiper)
(defvar swiper-include-line-number-in-search t)
(straight-use-package 'avy)
(straight-use-package 'swiper-helm)
(straight-use-package 'avy-migemo)
(avy-migemo-mode 1)
(require 'avy-migemo-e.g.swiper)
番外:VSCode
普段はemacs
なのですが、マークダウンをプレビュー見ながら書きたい時や、PDFにしたいとき用にVSCode
入れました。
Extensions
- Emacs Friendly Keymap
- Markdown All in One
- Markdown PDF