・→ キー: 次のページへ
・← キー: 前のページへ
・↑ キー: 目次ページへ
・↓ キー: 目次ページから戻る
・目次ページでは ← → キーで一覧を移動し、クリックで選択します
・1年経った後でもソースを簡単に読み返せるようにしたい
・Emacs Lisp でメジャーモードの開発は初めて
・(Lisp 的に考えて)変な所があったら教えて下さい
・サブヒロインに対しては冷たい選択肢を選ぶ
・このシナリオではフラグを出来るだけ立てない
→ 学校でのみ作業する
Eclipse のチート機能
ずるすぎワロタ
・定型文を瞬間的に挿入
・定型文は事前に登録する
・すごい勢いでプログラムが書ける
・典型問題に有用なクラスとか登録しておいたら…!
AutoHotkey でデモを
作ってみたらすごく快適!
$#m:: Send, int main(void){{}{Enter} Send, {Tab}{Enter} Send, {Tab}return 0`;{Enter} Send, {}}{Up}{Up}{Tab} Return
Emacs Lisp で本格的に
作る事にした
まず,
ユーザー視点から見ると…
・最初の一手(jk)
・for文(fn)
・標準入力(ci)
・classを追加(cl)
・ヘッダーファイルを追加(in)
・地味に便利な中括弧({)
プログラムの方は…
・「λかわいいよλ」
・PrettyLambda を使用
・「λ」→「lambda」
・cunning-mode.el
プログラム本体
・dot.cunning-mode
設定ファイル
;; 疑似Common Lisp (require 'cl) ;; キーの同時押しをサポート (require 'key-chord)
1. insert
→ insert-subs
2. キー定義テーブル
→ 別バッファ
→ ミニバッファ
3. point-*
カーソル関係の処理
文字列をインデントしながら挿入
@ - read-from-minibuffer
$ - カーソルをここに移動
キーと定型文を対応付ける
2つの方法で利用可能
(setq cunning-table-wafoo '(("キー" "挿入したい定型文")) ("w" "wafoo("@", stdout);\n$"))
画面右に一覧表示する
1. ask-buffer
2. table-to-buffer
3. key-to-insert
ミニバッファに一覧表示する
1. ask-minibuffer
2. table-to-minibuffer
3. key-to-insert
適切な挿入位置を調べる
include, difine, using, class, main の前後に対応
1. 2通りの方法でマップにキー定義
define-key, key-chord-define
2. 3通りの方法で関数に渡す
insert, ask-buffer, ask-minibuffer
以上でプログラムの説明は
おわり
けどそもそも,
たくさんペタペタして
何が嬉しいのか?
TopCoder とかから
上手い人のソースを,
どんどん引用して
張り付けていく
・.emacsみたいな肥大化推奨
・サンプルの設定ファイルは160行くらいしかない
→ 無断引用はまずいから省略している
本来は1000行くらい
設定してほしい
・コードを探すのが大変
・登録も面倒
・そもそも肥大化したキー定義テーブルは画面に収まりきらない
解決案: 登録したコード全てに対してisearchする機能
→ C-x-f-r みたいな
→ 一覧性も向上する
解決案: SKKの辞書ファイルみたいな管理機能
・region → ミニバッファで少し設定
・終了時に自動保存
これで発表はおわりです
ご静聴
ありがとうございました
・天野 仁史 (id:amachang)
S6
プレゼンテーションライブラリ
・David Andersson
key-chord.el
キーの同時押しをサポート
A.「Eclipse使用可」としている大会なら「たぶん」大丈夫です。心配なら確認してみて下さい。 無理なら設定ファイルを印刷するといいかもしれません。
A.登録するのが大変です。あとたくさんのレジスタを勝手に消費するのもよくありません。
A.プログラミングはEmacsでやりたいからです
A.設定ファイルはあくまでサンプルなので,ご自由に編集してお使い下さい。
A.今は英語とかで質問されても答える時間がないので登録を見送っています。 時間の余裕が出来たら登録します。