1. はじめに
以前こちらの記事においてEmacsをインストールしました.本稿では,その後Emacsの利用環境を整備するために行った初期化ファイルinit.el
に関する作業の備忘録です.
私自身が利用する(非常に限られた)設定に限定して整理している内容ですが,package及びuse-packageを中心にinit.el
を整理したいビギナー(私自身もそう)の方にはinit.el
事始めとして参考になるかもしれません.特に,(いくつかの)先人のブログ記事等には記載されていないパッケージ導入後の変化を記録している点が参考になるかもしれません.
なお,この記事は作業を進めながら書いています.そのため,今後も加筆修正が予想されます.現在のバージョンでは,以下の作業を含んでいます.
- パッケージリポジトリMELPA(-stable)の登録
- use-packageのインストール
1.1 環境
本稿執筆時の作業環境は以下の通りです.
- macOS: Catalina 10.15.4
- Emacs: Emacs 26.3 (emacsmacport) <-
brew cask
を使ってインストール(こちらの記事を参照)
##1.2 関連記事
- macOSへのTeX-Emacs環境の構築全体の流れについてはこちらの記事.
2. 初期化ファイルinit.elの作成
ここではEmacsを使って初期化ファイルinit.el
を~/.emacs.d/
下に作成します.Emacs 26.3 (emacsmacport)のインストール後にまだ~/.emacs.d/init.el/
が存在しないことが前提です(以前のEmacsバージョンにおいて使われていた初期化ファイル~/.emacs
や~/.emacs.el
が存在しないことも確認しています).
2.1 手順
Step 1: Emacsを起動し,C-x C-f
とし,ミニバッファにFind file: ~/.emacs.d/init.el
と入力してRET
.
Step 2: ファイルを保存し(C-x C-s
.これで~/.emacs.d/init.el
が作成される),Emacsを閉じる(C-x C-c
).
3. パッケージリポジトリMELPA(-stable)の登録
パッケージを利用する際にuse-packageというパッケージを利用すると便利らしいです.例えば,以下の記事を参照してください.
このuse-packageはパッケージ管理のためのツールpackage(Emacs 26.3ではデフォルトでインストールされている)を使えば,パッケージリポジトリMELPA又はMELPA-stableからインストールすることができるようです(MELPA-stableは安定版のMELPAということです.安定版があるパッケージについてはMELPA-stableを,そうでないものはMELPAを利用するという方針で良いのでしょうか...).
そこで,まずはリポジトリMELPA及びMELPA-stableを追加する手順を整理します.
3.1 手順
Step 1: Emacsで初期化ファイルinit.el
を開き,ファイルの最初(の方)に以下の行を追加する.
(require 'package)
;; MELPA
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; MELPA-stable
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
Step 2: 変更を保存し(C-x C-s
),Emacsを閉じる(C-x C-c
).
Emacs Lispは全然理解していませんが,(require 'package)
でパッケージ管理ツールのpackageを呼び出し,add-to-list
の行でpackage-archives
変数にリポジトリ情報を追加しています.最後の(package-initialize)
は新しくパッケージをインストールする際に,インストール先のパスの設定等を自動的に行うようにするための指示だと思います.
手順の整理にあたってはwagavulin氏のブログ記事「package.elで自動インストール」を参考にしました.
3.2 注意
同じパッケージ名のものがMELPAとMELPA-stableに存在する場合,MELPAからインストールが行われるようです.もしMELPA-stableを利用したいのであれば,あらかじめ指定しておく必要があります.
具体的には,(package-initialize)
の行の次に以下のような行を追加します(以下はwagavulin氏のブログ記事「package.elで自動インストール」からの引用).
(setq package-pinned-packages
'((web-mode . "melpa-stable")
(auto-complete . "melpa-stable")))
package-pinned-packages
変数を使ってweb-modeとauto-completeというパッケージはMELPA-stableのリポジトリからインストールするように指定しています.
4. パッケージuse-packageのインストール
上記の**3.**でリポジトリMELPA及びMELPA-stableの登録を完了したら,次はパッケージuse-packageのインストールです.use-packageはMELPA及びMELPA-stableのどちらにも存在します.ここでは,リポジトリMELPAからインストールすることにします.これはいくつかの記事,例えば
- horimislime氏の記事「Emacsのお手入れをする in 2019」(2019年2月28日)
- てぃー氏ブログ記事「私的 YaTeX 事始め」(2019年4月7日)
においてMELPAからのインストールが行われていたこと,use-packageのGitHubのREADME.md
に以下のような表現があったからです.
By default package.el prefers melpa over melpa-stable due to the versioning (> evil-20141208.623 evil-1.0.9), so even if you are tracking only a single package from melpa, you will need to tag all the non-melpa packages with the appropriate archive. If this really annoys you, then you can set use-package-always-pin to set a default.
"you will need to tag..."以降はさっぱり理解できません(汗)
4.1 手順
Step 1: Emacsで初期化ファイルinit.el
を開き,3.1 手順で追加した最後の行(package-initialize)
の次に以下を追加する(3.2 注意の設定を行う場合はその後に追加).
(unless package-archive-contents (package-refresh-contents))
(unless (package-installed-p 'use-package) (package-install 'use-package))
(require 'use-package)
Step 2: 変更を保存し(C-x C-s
),Emacsを閉じ(C-x C-c
),再度Emacsを起動する.
Step 1は,一行目でパッケージ情報が更新されていない状態であればpackage-refresh-contents
で更新し,二行目でuse-packageを(それがインストールされていない場合に)package-install
でインストールすることを意味しています.三行目の(require 'use-package)
でuse-packageを読み込みます.
4.2 結果
上記の手順に従ってuse-packageをインストールした結果,次のような変化がありました.
変化1:use-packageがどこにインストールされるか
パッケージ管理ツールpackageを使ってインストールしたuse-packageは~/.emacs.d/elpa/
下にインストールされたようです.
$ ls -l
total 0
drwxr-xr-x 5 ... staff 160 5 24 14:35 archives
drwxr-xr-x 6 ... staff 192 5 24 22:42 bind-key-20191110.416
drwxr-xr-x 22 ... staff 704 5 24 22:42 use-package-20200520.2305
use-package-20200520.2305
のディレクトリがuse-packageの本稿作成時の最新バージョンです.bind-key-20191110.416
はMELPAのページに記載のDependenciesにあるパッケージbind-key(これも本稿作成時の最新バージョン)で,自動的にインストールされたようです(これをどう使うのか,これを書いている時点では理解していません).
変化2:初期化ファイルinit.elへの加筆
上記の手順Step 2の後に初期化ファイルinit.el
を開い際に最後の行に以下が追加されていることを確認しました.よくわからないので,上記Step 1の最後の行の後に移動して,特にいじらないでおくことにします.
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages (quote (use-package))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
#5. バックスラッシュ()の問題への対処
デフォルトだとキーボードの¥
はそのまま円マークとして表示されます.バックスラッシュを入力するにはopt + ¥
とするか,「システム環境設定->キーボード->入力ソース」と進んで設定するといった方法があるようです.
しかし,自分が求めているのはEmacsの編集時にのみバックスラッシュになればOKというものです.これは初期化ファイルinit.el
の設定で対応できるようです(つうさに氏のブログ記事「日本語キーボードMacBookでEmacsのC-\する」を参照).
##5.1 手順
Step 1: Emacsで初期化ファイルinit.el
を開き,以下を追加する.
(define-key global-map [?¥] nil)
(define-key local-function-key-map [?¥] [?\\])
(define-key local-function-key-map [?\C-¥] [?\C-\\])
(define-key local-function-key-map [?\M-¥] [?\M-\\])
(define-key local-function-key-map [?\C-\M-¥] [?\C-\M-\\])
Step 2: 変更を保存し(C-x C-s
),Emacsを閉じ(C-x C-c
),再度Emacsを起動する.
#6. その他
##6.1 便利なパッケージ・機能
Emacsで編集を行う上で便利なパッケージや機能をメモ.インストールの手順等は今後加筆できれば.
- outline-minor-mode:TeXファイルの(sub)sectionレベルの折り畳み
- 参考:てぃー氏の記事
-
Dashboard:Emacs起動時に最近利用したファイル等の一覧を表示するパッケージ
- BookmarksはEmacs bookmarksの機能を使って作成される
~/.emacs.d/bookmarks
を参照している.
- BookmarksはEmacs bookmarksの機能を使って作成される
おわりに
今後加筆.