2005/11/24(木) [n年前の日記]
#1 [xyzzy] xyzzyで行の複製
一旦、xyzzy 上で ActionScript を打ってから、それをコピペして Flash Creator に書いてるのだけど。xyzzy で打ち込んでるうちに、行の複製が欲しいなと思い始めたり。例えば、
ネット中毒の自分なので、「xyzzy 行 複製」で検索して、 _実現してる方の記事 を見つけたのだけど。
ふと、xyzzy で何気なくシフトキーを押したら、F10 に「行複製」なる単語が。ガーン。今まで知らなかった…というか気づかなかった…。
なんだか siteinit.l に書いてあるみたいだから、もしかするとどこかで見かけてコピペしてそのまま失念してしまったのかもしれない。が、関数名でネット検索しても見当たらない。…とりあえず、siteinit.l の内容をコピペしてメモ。
にしても、ファンクションキーは遠いな…。どこかのキーに割り当てたいところ。
少し調べてみたら、vi なら yyp らしい。そのへんに近いショートカットキーにしておいたほうがいいだろうか。emacs で同種の操作があるなら、それに合わせたほうがいいだろうけど、検索してみた限りでは見つからなかった。
前述の記事では、C-c c に割り当ててあるらしく。自分の環境のキー割り当て一覧を眺めたけれど、たしかにそこは空いてるように見え…あー、xml-mode で使ってるな。うーむ。
C-c Insert が空いてるみたいだから、そこに割り当ててみるかな…。
カーソルキーから離れられない打ち込み方をしてるのもどうかと思うのだけど。>自分。たしかに効率悪いよなぁ。ホームポジションから離れることがなければ、楽になりそうな予感はあるのだけど。
む。連続して行複製したいときにちょっと面倒な。ファンクションキーでやったほうがいい場面もありそう。
hogefugehage._x = hogex;を、
hogefugehage._x = hogex; hogefugehage._y = hogey;にしたいときとか。
ネット中毒の自分なので、「xyzzy 行 複製」で検索して、 _実現してる方の記事 を見つけたのだけど。
ふと、xyzzy で何気なくシフトキーを押したら、F10 に「行複製」なる単語が。ガーン。今まで知らなかった…というか気づかなかった…。
なんだか siteinit.l に書いてあるみたいだから、もしかするとどこかで見かけてコピペしてそのまま失念してしまったのかもしれない。が、関数名でネット検索しても見当たらない。…とりあえず、siteinit.l の内容をコピペしてメモ。
;; -------------------------------------------------------------------- ;; S-F10 行複製(即座に処理する) (defun replica-line () (interactive "*") (save-excursion (insert (buffer-substring (progn (goto-eol) (point)) (progn (goto-bol) (point)))) (newline))) (global-set-key #\S-F10 'replica-line) (set-function-bar-label #\S-F10 "行複製") ;; -------------------------------------------------------------------- ;; S-F7 行削除 (defun kill-whole-line () (interactive) (kill-region (progn (goto-bol) (point)) (progn (forward-line 1) (goto-bol) (point)))) (global-set-key #\S-F7 'kill-whole-line) (set-function-bar-label #\S-F7 "行削除") ;; -------------------------------------------------------------------- ;; S-F8 行コピー (defun copy-line-as-kill () (interactive) (copy-region-as-kill (progn (goto-bol) (point)) (progn (goto-eol) (point)))) (global-set-key #\S-F8 'copy-line-as-kill) (set-function-bar-label #\S-F8 "行コピー")
にしても、ファンクションキーは遠いな…。どこかのキーに割り当てたいところ。
少し調べてみたら、vi なら yyp らしい。そのへんに近いショートカットキーにしておいたほうがいいだろうか。emacs で同種の操作があるなら、それに合わせたほうがいいだろうけど、検索してみた限りでは見つからなかった。
前述の記事では、C-c c に割り当ててあるらしく。自分の環境のキー割り当て一覧を眺めたけれど、たしかにそこは空いてるように見え…あー、xml-mode で使ってるな。うーむ。
C-c Insert が空いてるみたいだから、そこに割り当ててみるかな…。
(global-set-key '(#\C-c #\Insert) 'replica-line)
カーソルキーから離れられない打ち込み方をしてるのもどうかと思うのだけど。>自分。たしかに効率悪いよなぁ。ホームポジションから離れることがなければ、楽になりそうな予感はあるのだけど。
む。連続して行複製したいときにちょっと面倒な。ファンクションキーでやったほうがいい場面もありそう。
◎ 全てのモードのキー割り当てを表示するlispがあったら便利かもしれない :
と思ったけどlispはわからんので手の出しようもなく。
◎ _選択範囲をRubyで書いたフィルタにかける[xyzzy] :
検索してるうちに辿りついたけど元のサイトが消えてるみたいなので今のうちにコピペしてメモ。
(defun filter-region-menu (start end) (interactive "*r") "外部フィルタをメニュー選択できるfilter-region" (let (*filter-region-menu-alist* *filter-region-menu-cmd*) ; 外部フィルタのリスト (setq *filter-region-menu-alist* '(("ruby sort_r.rb") ("ruby html_dl.rb") ("sort") )) (setq *filter-region-menu-cmd* (completing-read "Command?: " *filter-region-menu-alist*)) (if *filter-region-menu-cmd* (filter-region *filter-region-menu-cmd* start end)) ) )
◎ _行セレクションを上下に移動(完成版) :
便利そう。selection が存在しないときは、1行のみの移動になるのか…。素晴らしい。
全然関係ないけど、S-C-Up、S-C-Down で、二つのウインドウをスクロールできたのだな。知らなかった。
全然関係ないけど、S-C-Up、S-C-Down で、二つのウインドウをスクロールできたのだな。知らなかった。
[ ツッコむ ]
#2 [windows] IME2003関係 - 確定のキーとか
確定するときに一々Enterに指を伸ばすのがしんどいなとふと思ったので、そのへんどうにかならんかなと。
ヘルプを見たら、Ctrl + M で確定できる、とあった。…が、急には指が動いてくれない。かえって打ち込む速度が遅くなってしまうような。
Ctrl+変換で、ショートカットメニューも表示されるらしい。知らなかった。
何かと関連付けたら覚えられるだろうか。
ヘルプを見たら、Ctrl + M で確定できる、とあった。…が、急には指が動いてくれない。かえって打ち込む速度が遅くなってしまうような。
Ctrl+変換で、ショートカットメニューも表示されるらしい。知らなかった。
- ひらがな変換 = Ctrl + U
- 全角カタカナ変換 = Ctrl + I
- 半角変換 = Ctrl + O
- 全角英数変換 = Ctrl + P
- 半角英数変換 = Ctrl + T
- 1 文字削除 = Delete、 Ctrl + G
- 前文字削除 = BackSpace、 Ctrl + H
何かと関連付けたら覚えられるだろうか。
- ひらがなの形はユニーク(U)
- カタくてイタいの(I)
- 半角カナは日本のオリジナル(O)
- 全角英数使う人は頭がピー(P)
- 真実の文字(T)
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
#3 [flash] loadMovie() で表示したjpgやswfは duplicateMovieClip()で複製できない
自分、完全に考え違いをしてた。loadMovie() で読み込んだムービークリップも複製できるものとばかり思い込んでたわけで。トホ。なんでもかんでも外部swfにして、最初に読み込んで、必要になったら複製すれば問題ないや、と思ってたけど全然甘かった。
ライブラリの中のムービークリップを attachMovie() してタイムラインに置くにしても、あるいは、タイムライン上に既に存在するムービークリップを duplicateMovieClip() するにしても、どうやらリンケージ云々なるものが絡んでるらしく。loadMovie() で読んだswf等にはそれがない or ロードした時点で消滅するから、それでおそらく複製等はできないのだろう。たぶん。
さて、仮に、外部から読みたい jpg or swf が大量にあった場合、どうしたもんか。思いつく解決策は2つ。
ということで、そういう場面では後者の方法でやるしかないんだろうなと想像したり。検索してみたけど、大体そういう方向に話は流れていくみたいだし。
ライブラリの中のムービークリップを attachMovie() してタイムラインに置くにしても、あるいは、タイムライン上に既に存在するムービークリップを duplicateMovieClip() するにしても、どうやらリンケージ云々なるものが絡んでるらしく。loadMovie() で読んだswf等にはそれがない or ロードした時点で消滅するから、それでおそらく複製等はできないのだろう。たぶん。
さて、仮に、外部から読みたい jpg or swf が大量にあった場合、どうしたもんか。思いつく解決策は2つ。
- 手作業で、一つ一つの画像を本体swfに読み込んで、ライブラリに登録・連番リンケージ名とやらを手打ちで指定していく。
- 一度読み込めばキャッシュとやらが利いてくれているだろうから、二度目以降はそんなに待たされないことをほのかに期待して、必要になるたびに、その都度、loadMovie() する。
ということで、そういう場面では後者の方法でやるしかないんだろうなと想像したり。検索してみたけど、大体そういう方向に話は流れていくみたいだし。
◎ loadMovie() に関して夢想 :
ファイル数が増えた場合、容量的にはたいしたことがなくても、逐一外部から読み込もうとするだろうから反応が遅くなるだろうと。それを考えると、何かしら、まとまった状態で読めたほうがいいのかもしれない。
巨大な画像を読み込んで、マスクを使って一部分だけ表示するとか。1フレーム1画像になってるswfムービーを読んで、本体swfから特定のフレームを指定して表示させるとか。
と思ったけれど、画面上で必要になるたびに、その巨大な、あるいは、やたらと長い、swfを読むわけにもいかない。万が一、キャッシュが利かなかったら大変なことに。
上手い方法は思いつかないなぁ…。
巨大な画像を読み込んで、マスクを使って一部分だけ表示するとか。1フレーム1画像になってるswfムービーを読んで、本体swfから特定のフレームを指定して表示させるとか。
と思ったけれど、画面上で必要になるたびに、その巨大な、あるいは、やたらと長い、swfを読むわけにもいかない。万が一、キャッシュが利かなかったら大変なことに。
上手い方法は思いつかないなぁ…。
◎ Flash Creator 1.6 は onEnterFrame を delete で消せない? :
本来なら、
仕方ないので、本当は推奨されないらしいのだけど、
mc.onEnterFrame = function () { delete this.onEnterFrame; }といった書き方ができるらしい のだけど。上手くいかない。いつまでも onEnterFrame が処理を続けてしまう。これまた Flash Creator の仕様 or バグかしら。海外の掲示板を覗いた限りでは、 _できるような感じで書かれてる ようなそうでもないような、うーん。
仕方ないので、本当は推奨されないらしいのだけど、
this.onEnterFrame = null;で代用。
◎ _F-site | イベントハンドラメソッドはdeleteで消せ! :
[ ツッコむ ]
以上、1 日分です。
塊と並びのまとまりで覚えています。
いまさらいうまでもないあたりで…
カット、コピー、ペーストはXCVというキーの塊と並び。
これと同じでT UIOPが
半角英数、ひらがな、カタカナ、半角、全角英数、
GHがDEL、BSっていうことで。
私の場合、半角英数の入力はIMEを使わない=直接入力モード
なのでTは忘れて
UIOP=ひらがな、カタカナ、半角、全角
と覚えたほうがすわりがいいですけどね。
あ! ホントだ。
そのへんのキーって、一列に並んでたのか…。
しかも、ホームポジションの一段上、でしたか。
> UIOP=ひらがな、カタカナ、半角、全角
お。なんとなくですが、そのほうが覚えやすそうな予感がします。
なるほどなぁ…。