Home About Contact
Emacs , Chromebook , Acer

Chromebook Linux に emacs をセットアップ outline mode , mozc, migemo を設定する

Acer Chromebook 311 (CB311-11H)

日本語を書くのはもっぱら ターミナル上で emacs を使って書いている。 しかし、長い文章では見通しが悪い。 pomera 搭載のエディタのようにアウトライン機能が使えればいいのにと考え始めた。 調べてみると、WZ Editor が pomera と同じアウトライン機能を持っていることがわかった。 (順番からいけばおそらく WZ Editorが先で、pomeraが後からそれをサポートしたのだと思う。) では WZ Editor 使うか、というと普段ターミナル上で動く emacs / vim でテキスト編集しているので、 テキストエディタはターミナル上で動いてほしい。 そもそも使いたいのは、アウトライン機能だけ。 ならば、emacs にアウトライン機能を追加する方法を調べればいいのではないか。 ・・・ということで色々調べたら、解決できた。

環境

環境は Chromebook ( Version 115.0.5790.160 (Official Build) (32-bit) ) の Linux です。

emacs 28.2 をソースから入れる

新しいほうがよかろうと思ってソースから入れたが、 普通に apt emacs-nox したバージョンでも、 ここで実現させたい範囲については問題ないのかもしれない。

GNU Emacs Download から version 28.2 (emacs-28.2.tar.xz) をダウンロードした。

$ xz -dv ./emacs-28.2.tar.xz 
$ tar xf ./emacs-28.2.tar
$ cd emacs-28.2/

基本的に ./configure; make; make install すればよいのですが、その前に必要なライブラリを入れます。

念の為 sudo apt update したあとに以下のライブラリを入れました。

$ sudo apt install make gcc

ターミナル上で emacs を使うので、--without-x オプションで入れます。

$ ./configure --prefix=$HOME/.local --without-x

configure: error: The following required libraries were not found:
     gnutls
Maybe some development libraries/packages are missing?
To build anyway, give:
     --with-gnutls=ifavailable
as options to configure.

gnutls がよくわからなかったので、 --with-gnutls=ifavailable オプションを使って回避することにします。

$ ./configure --prefix=$HOME/.local --without-x --with-gnutls=ifavailable

The following libraries were tried (in order):
  libtinfo, libncurses, libterminfo, libcurses, libtermcap

まだライブラリが足りない。以下を入れます。

$ sudo apt install libncurses-dev

これですべてのライブラリが揃ったので、インストールまで進めます。

$ ./configure --prefix=$HOME/.local --without-x --with-gnutls=ifavailable
$ make
$ make install

emacs コマンドは、$HOME/.local/bin に配置されるので、パスを通します。 ~/.bashrc の最後に以下を追記。

export PATH=$HOME/.local/bin:$PATH

初期設定する

~/.emacs.d/init.el に必要な設定を書いていきます。

outline mode

マークダウンファイルを開いたときに outline mode を適用したいので、.md 拡張子と outline mode を関連付けする設定を入れます。 また、outline mode デフォルトのアスタリスクではなく、マークダウンの # を見出しとして扱いたいので、その設定をあわせて追記。

;; md 拡張子のファイルは outline-mode にする.
(add-to-list 'auto-mode-alist '("\\.md\\'" . outline-mode))

;; asterisk に代えて markdown のタイトル記号を使う指定をする.
(setq outline-regexp "#[^#]\\|##[^#]\\|###[^#]")

これで、 .md 拡張子のファイルを emacs で開いたときに outline mode になります。 開いたテキストファイル中の #, ##, ### のある行にカーソルを置いた状態で、タブキーを押すと 折りたたみ/展開 ができるようになります。

mozc

日本語入力できるように mozc を入れます。

$ sudo apt install emacs-mozc emacs-mozc-bin

以下を init.el に追記。

(add-to-list 'load-path "/usr/share/emacs/site-lisp/emacs-mozc")
(require 'mozc)
(setq default-input-method "japanese-mozc")
(setq mozc-candidate-style 'echo-area)
(prefer-coding-system 'utf-8)

以下の指定を追記することで、変換候補がその場ではなく下部のミニバッファに表示されるようになる。

(setq mozc-candidate-style 'echo-area)

migemo

emacs 上で C-s して文字列検索するときに便利な migemo を入れます。

migemo の詳細はこちら https://github.com/emacs-jp/migemo/ です。

$ sudo apt install cmigemo

以下を init.el に追記。

;; cmigemo(default)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))

;;; ruby migemo
;(setq migemo-command "ruby")
;(setq migemo-options '("-S" "migemo" "-t" "emacs" "-i" "\a"))

;; Set your installed path
;(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
(setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")

(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(migemo-init)

ほぼ、 https://github.com/emacs-jp/migemo/ の説明の通り ですが、cmigemo を apt で入れた場合は、 migemo 辞書のインストール先が異なるので、そこは変更しています。

また、migemo.el も必要です。ここでは、 ~/.emacs.d/migemo/migemo.el に配置することにします。

$ cd ~/.emacs.d/
$ git clone https://github.com/emacs-jp/migemo.git

あとは、以下を追記して、migemo.el を読み込めるように設定します。

(setq load-path (cons "~/.emacs.d/migemo/" load-path))
(require 'migemo)

以上で完了です。

これで emacs でマークダウンファイルを編集するときに outline mode を使用でき、 日本語入力、日本語の検索ができるようになりました。 そして最大の関心事であった outline mode での折りたたみ・展開機能ですが、マークダウンで書いたテキストを開いて # のタイトル行に移動したあと、タブを押すことで、折りたたんだり展開したりできるようになっていました。すばらしい。

事前の調査では outline-magic.el を個別に設定しないとタブでの操作ができないと思っていたのですが、何も設定しなくても最初からできました。

まとめ

最後に設定ファイル全体を掲載します。

;; .md 拡張子に関連付ける.
(add-to-list 'auto-mode-alist '("\\.md\\'" . outline-mode))

;; asterisk に代えて markdown のタイトル記号を使う指定をする。
(setq outline-regexp "#[^#]\\|##[^#]\\|###[^#]")

;; mozc
(add-to-list 'load-path "/usr/share/emacs/site-lisp/emacs-mozc")
(require 'mozc)
(setq default-input-method "japanese-mozc")
(setq mozc-candidate-style 'echo-area)
(prefer-coding-system 'utf-8)

;; migemo
(setq load-path (cons "~/.emacs.d/migemo/" load-path))
(require 'migemo)

;; cmigemo(default)
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs"))

;;; ruby migemo
;(setq migemo-command "ruby")
;(setq migemo-options '("-S" "migemo" "-t" "emacs" "-i" "\a"))

;; Set your installed path
;(setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict")
(setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict")

(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-coding-system 'utf-8-unix)
(migemo-init)

さらに個人的な設定として以下も追記。

;; バックアップファイルをつくらない.
(setq make-backup-files nil)

;; メニューバーを非表示
(menu-bar-mode 0)

補足

ARM CPU の Chromebook ( Acer CB311 11H ) を使い始めた関係で、Wnn8 が使えなくなってしまった。 それで代わりに mozc を使うようにしたのだが、 もうこれでいいのかなと思い始めた。

ARM CPU ( MediaTek Kompanio 500 ) の Chromebook はバッテリー持続時間が長い。 そして、開いてすぐ使える。スリープ時のバッテリードレインが Intel CPU よりも少ない気がする。

この Acer CB311 11H は見た感じそれほど良さそうには思えないのだが、使い始めると、とてもよい。 なぜだか知らないが毎日使いたくなる、使っていて楽しくなるようなマシン。 もちろん、画面が小さいのでネットを見るとか、大きいスプレッドシートを使うのような閲覧作業には向かない。 そうではなく、ライティングとかコーディング用に適したマシンだと思う。

pomera も画面が小さいが、物書きに人気なように、自分の頭の中にあることを書き出していくときは、 そんなに広い画面である必要はない。 その意味で、CB311-11H はもう自分にとっては 次世代 pomera といっても差し支えない。 バッテリーライフは長い (カタログスペック 15時間、Windowsマシンと違ってバッテリー持続時間にカタログスペック詐欺はない)、 軽い、(pomeraと違って)ネットも閲覧できる。 そして、何より本物の英語キーボードがついている。しかもこのキーボードが(意外にも)とてもよい。 最近では Thinkpad X1 nano よりある意味良いのではないかとさえ思いはじめている。 本体がさほど薄くないので、キーボードトラベルを確保するだけの余裕があるのかな。

海外ではこの方(Keith Robinson, sci-fi and fantasy author)が長年から CB311 を使用して執筆されているらしい。

マシンの裏を見ると技適マークもついているので、日本でも発売する気だったのだろうか。 英語キーボード版の CB311-11H が日本でも発売されればいいのに。