Windos10、scoop版emacsのセットアップ
scoopでWindowsを入れられるようになったので、セットアップしてみた。
tr-imeを使用することで、scoopでインストールする普通のemacsでも日本語入力がストレスなくできる。
なお、この項は随時アップデートする予定だ。 現在、wsl版を使いつつ、Windows版に移行しているので、ついwsl版を使ってしまう。 それをちょっとずつ移行しているので、記載事項、今後も増える予定だ。
環境によって設定を変える
共通の設定ファイルで、基本的には大丈夫なのだけれど、パスとかウインドウ設定などが異なるので、OS固有の設定を自動で切り替えている。
(cond ; OSによって設定を切り替える
((eq system-type 'gnu/linux) ; X on WSL
(load "~/.emacs.d/conf/setting-wsl.el"))
((eq system-type 'windows-nt) ; Windows
(load "~/.emacs.d/conf/setting-win.el"))
((or (eq window-system 'mac) (eq window-system 'ns))
(load "~/.emacs.d/conf/setting-mac.el")
)
)
use-packageを使っているので、起動時に足りないパッケージは自動で取得してくれる。 なので、基本的にはemacsをインストールして、設定ファイル軍を配置して、emacsを起動してしばらく待てばいつもの環境が得られる。
ただ、それだけではうまくいかないこともやはりある。 そのへんの問題を解決するメモを中心に書いておく。
magitを使う
emacsといえばmagit
magit使いたいためにemacsをWindowsにもセットアップしたと言っても過言ではない。
magit自体はinstall-package githubでインストールできるし、特に設定も必要ない。 (なんでかな?気になるけど、自由研究課題としてとりあえず放置)
magitというか、github
まずはgithubの自分のリポジトリを使えるようにする。
以前はデフォルトの状態で、ユーザ名とパスワードを入力すれば使用できた。今はこの方法は推奨されておらず、廃止予定のようだ。
そこで、sshのキーで接続できるようにする。 公式サイトの説明を順番どおりにやればできる。
余談だけど、分からないことがあるとついつい検索してしまうけれど、公式ドキュメントが一番便利ということが多い。
ssh-agentを自動起動する設定は以下がわかりやすい。 https://qiita.com/tmak_tsukamoto/items/c72399a4a6d7ff55fcdb
それと、URLはgit@github.comだ。 ユーザ名のところを自分のユーザ名にしてしまい<ユーザ名>@github.comとすると、エラーが出る。 以下のメッセージが出る。
Error: Permission denied (publickey)
正しく設定すると、.git/configのエントリは以下のようになる。
url = git@github.com:<ユーザ名>/リポジトリ名.git
wslからwindowsへの移行
普段使っているwslのemacsからの移行に際して、all-the-iconsを手動でインストールする必要があった。 (たぶん、以下の設定を書いておけば、自動でインストールしてくれるはず。)
(use-package all-the-icons)
all-the-iconsというのは、アイコンのことだ。ディレクトリとかファイル、Gitのリポジトリなど記号が収録されている。これと、doom-themeなどを併用すると、文字だけではイメージしにくい画面に記号を表示してくれる。テキストだけのときよりもいろいろと分かりやすい。
モードラインなどに、E2569などの記号が色付きで表示されて、「なにこれ?」となるときは、フォントのインストールがされていない可能性がある。フォントのインストールはパッケージのインストールとは別で、しかも手動だ。
公式サイトに手順が載っている。 M-x all-the-icons-install-fonts でフォントをダウンロードするので、ダウンロードしたフォントを手動(例えばダブルクリック)して、システムにインストールする。
blogを書く
blogは、hugoを使用している。 easy-hugoというツールが便利でこれもやはりemacsを使う理由になっている。
easy-hugo-pull-imageで、指定した画像ファイルを公開用のページにコピーできるのがかなり便利。
Windows移行時のhugoのエラー
特に問題はなかったのだが、一つだけ。
template for shortcode "mermaid" not found
というエラーについては、以下を参考に、サブモジュールをダウンロードすれば解決した。 このエラーは、僕がサブモジュールについてよく理解できていなくて、ミスっただけだ。
recurse-submodulesを忘れて、普通に git cloneしてしまい、今回のようなエラーに見舞われる (出所:「Hugo serverでショートコードエラー - Scribble」 )
tr-ime
ドキュメント通りの設定で使用。 ただし、doom-modelineとの関係で日本語の状態がうまく表示されない。
そこで、doom-modelineを以下のように設定しておく。まだ設定はよくわからないので、ドキュメントそのまま。
(use-package doom-modeline
:ensure t
:init (doom-modeline-mode 1)
)
このあとに、after-initのhookでw32-ime-initializeを走らせると、modelineの一番端に現在のIMEの状態が表示される。 正直、ちょっぴりかっこ悪い。。。なくてもいいかもなあ。
(use-package tr-ime
:ensure t
:init
(tr-ime-advanced-install)
:hook
(after-init . w32-ime-initialize)
:config
(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[--]")
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]"))
(w32-ime-wrap-function-to-control-ime 'universal-argument)
(w32-ime-wrap-function-to-control-ime 'read-string)
(w32-ime-wrap-function-to-control-ime 'read-char)
(w32-ime-wrap-function-to-control-ime 'read-from-minibuffer)
(w32-ime-wrap-function-to-control-ime 'y-or-n-p)
(w32-ime-wrap-function-to-control-ime 'yes-or-no-p)
(w32-ime-wrap-function-to-control-ime 'map-y-or-n-p)
(w32-ime-wrap-function-to-control-ime 'register-read-with-preview)
(add-hook 'minibuffer-setup-hook 'deactivate-input-method)
)
忘れがちなことのメモ
ファイル形式の変換
文字コードを指定して開きなおす。微妙によく忘れるのでメモ。
C-x ENTER c (文字コード) C-x C-v
開いているファイルの文字コードを(次の保存時に)変更する。