先日再挑戦したSP六段の結果が意外に良く、以前よりかなり余裕を持ってプレイできたました。その勢いで特攻してみたところ……SP七段取得! 自分でも信じられません。
特攻とは言ったものの、実際には次のような予習をしました。
予習の段階では「THE SAFARIまでは何とか辿り着けるけれど、THE SAFARIのBAD+POOR数が110程度と多過ぎるので途中で落ちる」と予想を立てていたのですが、本番では予想以上にゲージが残せたのもあってギリギリのところでクリアできました。でも、本当にぶっつけ本番でプレイしたらまず落ちてたでしょうね。特にrainbow rainbowは1+3/2+4+6交互とか1+7/3+5トリルとか2+6/4トリルとか後半の対称地帯とか、事前に把握してないと捌けませんでした。
色々と思うところはあるのですが、取り敢えずこれで一区切り。今後は未プレイ曲を埋める等、のんびり遊ぶことにします。
Insert modeにおいて<C-w>や<C-u>での削除をundoできるように、以下のようなmappingsを定義しておいたのですが、実は予期しない副作用があることに気付きました。
" Undoable <C-w> and <C-u>. inoremap <C-w> <C-g>u<C-w> inoremap <C-u> <C-g>u<C-u>
通常、<C-w>/<C-u>はInsert modeの開始位置までしか削除しません。既にカーソルがInsert modeの開始位置にある場合には、その位置を越えて削除を行います。
しかし、上記のmappingsを定義した場合、この「Insert modeの開始位置で一旦止まる」という挙動がなくなり、一気に削除されます。具体的には以下のような感じです:
# ``|''はカーソル位置 # 初期状態 foo bar| baz # 適当に文字を挿入した foo barINSERTED| baz # <C-u>の挙動 foo barINSERTED| baz foo bar| baz # 1回目 - 開始位置までしか削除されない | baz # 2回目 - 通常通り、行頭まで削除される # <C-g>u<C-u>の挙動 foo barINSERTED| baz | baz # 1回目 - 一気に行頭まで削除される
この副作用がかなり不便です。「止まる」ことを期待してるのに止まってくれないのですから。問題のmappingsを削除しようにも、undoできないと稀に困りますし。どうしたものか……
touser 0.0をリリースしました(CodeRepos::Share/lang/vim/touser)。ユーザー定義のtext objectsを簡単に追加・使用するためのサポートライブラリです(ライブラリというには規模は小さいですけど)。
一応pluginの形で書いたものの、これ単体ではUIに対して何の影響もないので、別の形でまとめるべきだとは思います。とはいえ、Vimはライブラリ的なスクリプトを扱うための標準的な方法がないので困っています。:help write-library-scriptの記述はあるものの:
exists()と:runtimeを使う方法:requireや:import的なコマンドが存在しない。という状態ですから。
身辺整理はじめました。近々、引越しする予定なので、その準備的な意味で。
まずは不要な物の処分を、と思って取り敢えず本の整理から始めたのですが、改めて見てみるとかなりの量でした。文庫、新書、雑誌、漫画の単行本だけでダンボール2箱がパンパンです。重すぎて運べません。誰か助けて。まだ技術書籍、昔の教科書類、そして同人誌という強敵達が待ち構えているのに。
本の処分を終えたとしても、CD、DVD、ゲーム機、PC関係、衣服が残っているという……何か嫌になってきたな。
しかし、何かと予想外の代物が出てきて吹きまくりです。DPS D6~D16とか、Ragnarok Onlineのファンアートブック(韓国版)とか、アニメ版「シスター・プリンセス」DVD全巻+初回限定版のフィギュア計9体とか、TCG用バインダー3冊(柄はモンスター・コレクションなのに中身はTo HeartやAIRのTC)とか。特にシスプリがどう処分したものか困ってます。中古屋に流そうにもフィギュアが……誰か引き取ってください。
あー、つい、ふらっと。「ココアリロン 総集編」以外は半ば衝動買い。
$ svnadmin --version svnadmin, version 1.4.2 (r22196) compiled Nov 10 2006, 17:39:50 ... # 冗長なので省略。以下同様。 $ svn --version svn, version 1.4.2 (r22196) compiled Nov 10 2006, 17:39:50 ... $ svk --version This is svk, version 1.08.
$ cd /tmp $ svnadmin create test-depot $ svnadmin create orig-repos $ svk depotmap /test /tmp/test-depot New depot map saved.
$ svk mirror /test/mirror/orig-repos file:///tmp/orig-repos Committed revision 1. $ svk sync /test/mirror/orig-repos Syncing file:///tmp/orig-repos $ svk copy -p /test/mirror/orig-repos /test/local/orig-repos Waiting for editor... Committed revision 2.
$ mkdir lunar-project
$ touch lunar-project/{COPYING,ChangeLog,NEWS,README}
$ svk import lunar-project /test/local/orig-repos/lunar-project
Committed revision 3.
Import path /test/local/orig-repos/lunar-project initialized.
Waiting for editor...
Committed revision 4.
Directory /tmp/lunar-project imported to depotpath /test/local/orig-repos/lunar-project as revision 4.$ svk info /test/mirror/orig-repos Depot Path: /test/mirror/orig-repos Revision: 4 Last Changed Rev.: 1 Mirrored From: file:///tmp/orig-repos, Rev. 0 $ svk info /test/local/orig-repos Depot Path: /test/local/orig-repos Revision: 4 Last Changed Rev.: 4 Copied From: /mirror/orig-repos, Rev. 1 Merged From: /mirror/orig-repos, Rev. 1 $ svk info /test/mirror/orig-repos/lunar-project Filesystem has no item: File not found: revision 4, path '/mirror/orig-repos/lunar-project' Filesystem has no item: File not found: revision 4, path '/mirror/orig-repos/lunar-project' $ svk info /test/local/orig-repos/lunar-project Depot Path: /test/local/orig-repos/lunar-project Revision: 4 Last Changed Rev.: 4
$ mkdir work $ cd work $ svk co /test/local/orig-repos Syncing /test/local/orig-repos(/local/orig-repos) in /tmp/work/orig-repos to 4. A orig-repos/lunar-project A orig-repos/lunar-project/ChangeLog A orig-repos/lunar-project/COPYING A orig-repos/lunar-project/NEWS A orig-repos/lunar-project/README $ cd orig-repos/ $ svk info Checkout Path: /tmp/work/orig-repos Depot Path: /test/local/orig-repos Revision: 4 Last Changed Rev.: 4 Copied From: /mirror/orig-repos, Rev. 1 Merged From: /mirror/orig-repos, Rev. 1 $ svk info lunar-project/ Checkout Path: /tmp/work/orig-repos/lunar-project Depot Path: /test/local/orig-repos/lunar-project Revision: 4 Last Changed Rev.: 4
$ svk push Auto-merging (0, 4) /local/orig-repos to /mirror/orig-repos (base /:0). ===> Auto-merging (0, 2) /local/orig-repos to /mirror/orig-repos (base /:0). Merging back to mirror source file:///tmp/orig-repos. Empty merge. ===> Auto-merging (2, 3) /local/orig-repos to /mirror/orig-repos (base /:0). Merging back to mirror source file:///tmp/orig-repos. A lunar-project New merge ticket: 942dc1df-7d78-4a9e-ba5b-9df7cfd06e5d:/local/orig-repos:3 Merge back committed as revision 1. Syncing file:///tmp/orig-repos Retrieving log information from 1 to 1 Committed revision 5 from revision 1. ===> Auto-merging (3, 4) /local/orig-repos to /mirror/orig-repos (base /local/orig-repos:3). Merging back to mirror source file:///tmp/orig-repos. A lunar-project/ChangeLog A lunar-project/COPYING A lunar-project/NEWS A lunar-project/README New merge ticket: 942dc1df-7d78-4a9e-ba5b-9df7cfd06e5d:/local/orig-repos:4 Merge back committed as revision 2. Syncing file:///tmp/orig-repos Retrieving log information from 2 to 2 Committed revision 6 from revision 2. $ svk info Checkout Path: /tmp/work/orig-repos Depot Path: /test/local/orig-repos Revision: 4 Last Changed Rev.: 4 Copied From: /mirror/orig-repos, Rev. 1 Merged From: /mirror/orig-repos, Rev. 1 $ svk info lunar-project/ Checkout Path: /tmp/work/orig-repos/lunar-project Depot Path: /test/local/orig-repos/lunar-project Revision: 4 Last Changed Rev.: 4
$ cd /tmp/work $ svk co /test/local/orig-repos/lunar-project Syncing /test/local/orig-repos/lunar-project(/local/orig-repos/lunar-project) in /tmp/work/lunar-project to 7. A lunar-project/ChangeLog A lunar-project/COPYING A lunar-project/NEWS.old A lunar-project/NEWS A lunar-project/README $ svk info Checkout Path: /tmp/work/lunar-project Depot Path: /test/local/orig-repos/lunar-project Revision: 7 Last Changed Rev.: 7
$ svk push Cannot find the path which '' copied from.
pushできない原因: svk infoの表示をよく見ると/test/local/orig-repos/lunar-projectには"Merged From"や"Copied From"の情報が含まれていないので、pushする先が分からないためにpushできないことが分かりました。/test/local/orig-reposの方にはこれらの情報が含まれているので正しくpushできます。
問題の情報が含まれない理由: ローカルブランチで追加されたものはミラーからコピーしたものではないため。
混迷: 原因は分かりましたし、問題の情報が含まれないことも納得できるのですが、これでは任意のディレクトリをcheckoutしてもpushできないので使い物になりません。再度ローカルブランチを作成すれば問題の情報は含まれるようになるものの、プロジェクトを追加するたびにそんなことをしたくありません。pushはsmergeのラッパーなので手動でsmergeするという手段はありますが煩雑すぎます。実際、今日はCodeRepos::Shareへ手動smergeでpushしようとして大失敗しましたし(Changeset 334-340の辺り)。
ローカルブランチではなくミラーに対して直接変更を行い、その後でpullすれば問題の情報が含まれるかと思ったのですが、それもダメでした。一体どうしろと。
……と、ここまで書いた時点で、にゃるらさんのところで似たような問題を見かけた覚えがあることに気付きました。そもそも最初にエラーメッセージそのもので検索すれば良かったということにも気付きました。絶望した! 自分の馬鹿さ加減に絶望した!
Vim pluginのsurroundですが、少々不便に思うところがあったので適当に修正してCodeRepos::Shareにcommitしてみました(CodeRepos::Share/lang/vim/surround)。詳細についてはそちらを参照してください。
本来の目的は「」や『』などの記号についての設定を追加することだったのですが、実際に試してみるとsurrounding objectsの削除や変更においてユーザー定義のobjectsが対象に取れないことが分かり、それがどうしても気に食わなかったので直してしまいました。また、ユーザー定義のobjectsに対して2文字以上のキーを割り当てたかったので、(間接的ではあるものの)これもできるように修正しました。気が向いたらもう少し修正を加えるかも知れません。
とっても忙しいのでアウトプットが減る予感。