Emacs

Emacsのマグカップを買った

FSF のショップにある Emacs のマグカップを買ってみました。

テカテカで映り込みそうなのであんまり写真は上げていないんですが、なかなか良いです。 ロゴの色は FSF のページの写真よりちょっと青っぽいですね。これは個体差なんでしょうか。

これを注文したのは 11/29 とかだったのですが、届いたのは年が明けて 1/25 とかでした。 箱に何故か中国郵政のステッカーが貼ってあったので、誤配送で中国を経由してしまった説はあります。 (一番安い配送オプションを選んだせいもあると思います。)
1 ヶ月後に控えた引っ越しに間に合うかとビクビクしていたんですが、何もメールが来なかったのは FSF に登録しているメールアドレスを 更新し忘れていたせいだと後で気づきました。

Emacsのページについて

超久しぶりに投稿。軽いメモ。

form feed (^L) を入れておくと Emacs で適当にスクロールできるところまでは覚えているのだが、 その使い方を毎回忘れる……。

C-x [ (backward-page) で前のページ、 C-x ] (forward-page) で次のページにジャンプする。

page-ext というパッケージを使えばもっといろいろできるらしいけどまあ今のところ必要ないかな。

まあこういう文字が必要になる時点で複数ファイルに分割すべきという話ではあるかもしれないが。

Emacs標準のスプレッドシートses-modeの使い方メモ

ファイル

拡張子を .ses にすると自動で ses-mode になる。 また、そうじゃないファイルでも一回 ses-mode で保存すれば Local Variables が付けられた状態で保存されるので 次からは自動で ses-mode になる。

ファイル自体は先頭に表示内容が入っていて、その後ろに正式なデータといろいろメタデータが S 式で入っているという感じに見える。 ses-mode 自体のコードは読んでないけど。

セルの追加・削除

適当な表

/ C- M-
o 行を挿入 列を挿入
k 行を削除 列を削除

ただ、一番右に追加していくみたいな場合は C-i で移動していけば追加されていくし、 下に追加していくみたいな場合には C-j でいけるのであんまり表のキーを使うことはなさそう。

Emacs内のターミナルでのEmacsの実行をいい感じにした

ちょっと前ですが、「Emacs 内のターミナルで Emacs を開こうとしたら既に開いている Emacs でそのファイルを開く」やつを作りました。

動作

しくみ

ざっくり説明すると、DBus を使って Emacs とシェル (で立ち上がるプロセス) が通信して、 Emacs を開く代わりに現在のセッションで開いているように見せるという感じになります。 通信できるなら別に DBus じゃなくてソケットでもいいんですが、DBus だと Emacs Lisp の インターフェースでサーバを作るのが楽なので DBus になりました。

さて、この機能の実現には Emacs 側とシェル側 (厳密には emacs コマンドで立ち上げるプロセス) に細工が必要です。これ以降でそれらをもう少し詳しく説明します。

Emacs 27.1の面白そうな変更

開発者ではなく一ユーザーとして。メジャーリリースでいろいろ変更があるようだ。 NEWS.27 のファイルに変更の長いリストがある(visible changes って書いてあるので 内部的にはもっといろいろ変わっているということだが)。

JSON のパースがネイティブになる

LSP が広がったことで JSON をパースすることが多くなり,高速化を図ったのだろう。

設定ファイルをホームディレクトリに直接置く必要がなくなった

今までは設定ファイルは .emacs.d の中に設定ファイルを置いていたが, $XDG_CONFIG_HOME/emacs に置けるようになる。 多分デフォルトの XDG_CONFIG_HOME であれば ~/.config/emacs になると思う。 ホームディレクトリが散らからないので良い(ドットファイルだったのでさほど問題ではなかったが)。

Emacs の glasses-mode

camel case を snake case で表示してくれるやつ。 僕は camel case より snake case や chain case の方が好きなので, ………と思ったけど表示とデータが違うって実際に書くときに使える訳ないじゃん。

そういや C# で推奨されてるメソッド名を大文字で始めるってやつ好きくない。。。。。(言葉がおかしい)

(setq glasses-mode-uncapitalize-p t)

ってしとくと,アンダースコア直後のアルファベットが小文字に変換されて表示される。 まあ実用性はないです。

実用性ないといえば,M-x zone とかけっこう好き。特に drip 系のエフェクトが秀逸。

という訳で,glasses-mode は好きじゃないスタイルのソースコードを眺めるときに便利だよ, という話でした。(ほんまか)

Emacs 内でターミナルを使うなど

ターミナル内で Emacs じゃないです。Emacs 内でターミナルです。いつも軽い用途であれば M-x shell とかを使って, ちゃんと使いたいときは GNOME のワークスペースを増やしたりしてターミナルを使っているんですが, M-x shell はターミナルとしてはかなり機能が貧弱だと思っていて,ワークスペースを切り替えるのはターミナルを 見ながら書けなかったり Emacs のヤンクみたいなことができなかったり残念なので,Emacs 内でもっと 便利に shell にアクセスできないかなと。で,なんか M-x の補完を眺めていたら, term ってやつを 見つけて,適当に試してみたら,色もちゃんとついたりして意外と良さそうだと。 ちゃんと使うとなるとウィンドウを分割して使ったりできないと不便なので,やってみようと思ったら, そのへんのキーもターミナルに持っていかれるらしく,なんか残念だなと思いました。 あとヤンクとかもできない。なんじゃこりゃ。存在意義が。

Emacsをビルドするときにconfigureがうまくいかない場合の対処法

たしか Ubuntu だと libgnutls28-dev を入れても configure スクリプトで認識されなかった。 その場合、 pkg-config を明示的にインストールしてやるとそれらのライブラリが認識されて ビルドが通る。

これは。 configure スクリプトで pkg-config の結果がデフォルト値に設定されていて、 コマンドライン引数でそれを上書きできるという作りになっているからっぽい (だからオプションで指定しても いいはず。面倒臭いけど)。