Arch LinuxでEmacsclientを利用する時の環境変数設定の話。

( ´_ゝ`)ノシ

この記事はEmacs Advent Calendar 2015 12日目の記事です。

qiita.com

11日目はkoshさんの記事でした。

Emacs - 連想リストの参照を少しでも楽にしたい - Qiita

 

本記事はEmacsclientのお話です。

1. Emacsclientって?

  プラグインや設定が多くてemacsが重くなった時の対処法の一つ。

  常駐ソフトの様に裏であらかじめ起動させておく。

  既に起動させている状態なので「起動が重い!」と言わなくて済む。

 うっかりemacsclientのウィンドウを終了させても、バックグラウンドで

 起動してるままなので安心。

   本記事はpacmanでインストールしたGNU emacs 24.5.1を使っています。

 

2. Arch linuxで使う時は

 systemdってのを使う。

 https://wiki.archlinux.org/index.php/Emacs#As_a_daemon

 ~/.config/systemd/user/emacs.service

   にemacsをバックグラウンドで起動する設定を書いて

 

 $ systemctl --user enable emacs

 でsystemdで利用可能な状態にして

 $ systemctl --user start emacs

 でバックグラウンドで起動させる。

 

 $ emacsclient -nc

 で使う。

 ~/.bashrcに

   alias ekill='emacsclient -e "(kill-emacs)"'

   と書いておくとemacsclientを再起動させたい時に

 ekillと打つだけで済むので楽です。

 

3. 本題

 2. の通りに設定してそのまま使うと

 IMEを使った日本語入力ができない事態に遭遇します。

    (emacsskkプラグイン使ってる人は問題ない)

 原因はsystemdから起動する時のソフトは

 .bashrcの設定を読み込まないことらしい。

 emacsでM-x eshellして.bashrcで設定している変数を

   $echo $XMODIFIRES

   の様にechoで確認して文字が出力されなかったら多分これです。

 

4. どーすんのよ

 ~/.config/systemd/user/emacs.service

 に環境変数の設定を書きます。

 [Service]の下の行あたりに

   Environment="LANG=ja_JP.UTF-8" "HOGE=huga"

   と書いて保存したら

   $emacsclient --e "(kill-emacs)"

   でemacsclient再起動して

 M-x eshellして

    $echo $LANG

    $echo $HOGE

    で確認しましょう。

 ja_JP.UTF-8とかhugaと出てきたら設定OKです。

   後は.bashrcで設定してたもので必要な環境変数を設定しましょう。

 

5. systemdの環境変数設定の仕方ってだるくないか?

    この記事を見て、systemdで起動する時、

    .bashrc読み込んでくれたらいいのにと思うかもしれません。

  思うかもしれませんがちょっと待ってください。

 

    この記事を読んでいる方で長い期間利用しているPCや

    他人のPCを使っていて、昔にインストールしたまま放置していたソフトや

    知らない設定で今やろうとしていたことを邪魔された経験の

 無い方はいらっしゃいますか?無い人の方が珍しいのではないでしょうか?

 

 systemdのやり方であればソフト毎に環境変数を設定できるので

   他のソフトの環境変数とぶつからない素敵なやり方だと思います'`ィ (゚д゚)/

 

6. まとめと言う名の言い訳

    この記事どちらかというとArch Linux Advent Calendarじゃないかって?

     Emacsの話だから⊂(^ω^)⊃ セフセフ!!

 

Emacs Advent Calendar 2015 13日目 はkai2nenobuさんの記事になります。