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

ファイル

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

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

セルの追加・削除

適当な表

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

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

コピペ

普通に M-w とか C-y で。

データの入力

ここが Emacs らしくて面白いと思うのだが、数値や文字列の他に S 式も入れられる。 S 式を入れる場合、quote しなければその式を評価した結果が入るし、quote してから入れると自由なデータが入れられる。 セルに S 式を入れまくることで暗黒の神 Excel を簡単に (?) 作ることができる。

注意点として文字列を入れる場合には "" で囲まなければエラーになる。

集計とか

S 式が書けるのを使う。

A1, A2 みたいな変数にセルの値が入っているが、これは集計には少々不便なので範囲指定のためのマクロを使う。 ses-range というマクロに範囲を渡すことで、入っている値をリストとして取り出せる。 これと apply を使って、

(apply '+ (ses-range A1 D1))

みたいにすると A1, B1, C1, D1 の和が求まる (ちなみにセルを挿入したときはこういった参照もよしなにやってくれる)。

このマクロには微調整用のフラグを渡せるが、これは docstring を見たほうが早い。

一般的な集計の関数にはラッパーぽいものが用意されていて、apply を使わずに完結に書ける。

(ses+ A1 D1)
(ses-average A1 D1)

また、使うセルをプログラマティックに決めたい場合は ses-cell-value で値を取れる。

以上、メモ