Oh! Can Not Diary

おきゃんなダイアリー

(kansai-emacs #x03)の感想かいたよ

先日、第3回関西Emacs勉強会に参加しました。
関係者のみなさん、お疲れさまでした。感想を書くまでが勉強会!だそうなので、書きます。

自己紹介たいむ

今回もいろんな方が来ていましたが、学生、学者さんが多い印象でした。オンラインで知ってるだけの方と実際にお会いできることはやっぱり勉強会に参加する意義ですね。妄想がしやす(ry 自分は自己紹介で「趣味はelispでかけざんすることです」と言いましたが、どれくらい伝わったのかは謎です。

発表

今回も便利なelispやすごい話を聞けました。個人的にはid:IMAKADOさんのinit-loaderやid:r_takaishiさんのorg-modeでプレゼンていうのは、すぐにでも試してみたいなと思いました。あとid:kiwanamiさんのEmacsFPSがすごすぎました。

雑談

関西Emacs勉強会運営委員の募集

メーリングリスト→http://peccu.sytes.net/mailman/listinfo/kansai-emacs-admin
わたしも余裕があれば協力したいですねー。

今後の勉強会のやり方についての議論

日程はこれから4月、10月とか月を決めてやりましょうか、ということに。4月はお花見とかぶらなかったら参加したいです(笑) 今後のテーマややり方についてもたくさんアイディアがあがりましたが、ソース読み会とかいいなぁと思いました。

おまけ

次は懇親会参加したい

場所と時間の都合で今回は参加できなくて残念でした。議論の続きが懇親会でされたのか気になります。

女子増やしたい!

今回も予想通り女子1人でした。。後輩ができたら洗脳して連れていきたいです。あとはやっぱり輝き系の人たちをターゲットにした記事を書くしかないですかね。

id:tomoyaさんとBL談義

「呼び出し」はおすすめなんですね。読んでみます。(Emacs関係ない…)

いつか発表できるように

いつかLTくらいの軽い感じでできればなぁと思いますが、やるとしてもネタってBLネタしかないですね。残念ながら。

Play Station Moveの卓球がおもしろすぎた

スポーツチャンピオンの卓球がやりたくて、Play Station Moveを買いました。

卓球以外にもアーチェリーとかビーチバレーとかマイナー系のスポーツができるのですが、断然、卓球が面白い!
角度とか回転とかも細かくて再現性が高いです。

正直、卓球やった後に他のスポーツやるとこんなもんか〜ってなる。

あとキャラがみんな顔濃いwww

他のソフトでは、光と影の無限回廊の体験版をちょっとやってみたけど、芸術的要素が高い感じ。
ボウリングはWiiに比べてどうなのかな。Wiiのは簡単にストライク出せちゃったからそれより難しいのがいいな。


まぁただひとつの問題は、私はPS3本体を持っていないので週末に人の家でしかできないことです。

Emacs22と23のコメント機能の違い

Emacs22と23のコメントアウトした部分のインデントの違いについて。
Emacs23だとこんな感じ。レベルを見て#つけてくれます。

class test(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.setDaemon(True)
        self.i = 0

    def run(self):
        print "Start."
        while True:
            time.sleep(10)
            # self.i += 1
            # print self.i * 10

でも22だと下のようになってしまう。

class test(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.setDaemon(True)
        self.i = 0

    def run(self):
        print "Start."
        while True:
            time.sleep(10)
#            self.i += 1
#            print self.i * 10

これがPythonの場合、ちょっと厄介なことになっていて、#が行頭にあると次の行でのインデントが一番前にしかできなくなるので、選択した状態でC-c C-rして、元のレベルに合わせてあげないといけない。ちゃんと試せてないけど他の言語だと発生しないっぽい?

こういうこともあってWin環境の方もEmacs23に移行しようとしてたら、フォントとかいじっているうちに壊れた…
ので、とりあえず22使って時間があるとき再チャレンジすることにします。

雪が降ってやんだ

2010年の最初のTODOは目標を立てることだったのに、立て忘れて結局大晦日迎えてしまったわたしです。こんにちは。

昨日FM802主催のRADIO CRAZYっていうカウントダウンしてないけどまぁそれにかなり近い冬フェスに会社の先輩・同僚と行ってきました。サカナクションはたいそう盛り上がりましたし、とても寒かったです。でも今日の方が圧倒的に寒い!!!まぁそれはいいとして、帰りの車内で来年の抱負は?という話になって、「5キロ痩せる」宣言してしまったので、来年の目標はそれです。

まぁそれもいいとして、今年一番印象に残ってるのはせんとくんの中に入ったことです。
☆基本のポーズ☆
f:id:oh_cannot_angel:20101028015440j:image:w200

来年は彦にゃんがいいなぁ。
それではよいお年を。

diredを攻めよう(Emacs Advent Calendar jp: 2010)

こんばんは。これはEmacs Advent Calendar jp: 2010 : ATNDの16日目の記事です。
昨日はid:nekopさんのEmacsでJavaを書く - nekopの日記でした。明日は深町さんです。

id:tomoyaさんにお願いされたネタはちょっと間に合わなかったので…これだけでもEmacsを使う価値はあると言っても過言ではないくらいわたしの大好きなdiredについてのTipsをちょこっと書いてみようと思います。

wdired × dired

文字通り、wdiredとdiredは攻受の関係にあります。wdiredの攻めっぷりはいまや紹介するまでもないくらい有名なのですが、外せないので一応簡単に。

置換と組合わせ

wdiredを使うとdiredでのリネームが簡単になります。置換もできるようになるので、拡張子の変更なども一瞬です。またcua-modeによる連番機能も組み合わせると便利です。
参考: Emacs で wdired と moccur-edit を使っていない人は(ry - Higepon’s blog - Mona OS and Mosh
参考: cua-mode - ぺっくブログミラー@peccul

hoge.el → ../hoge.el

こういう書き方もできます。

日付編集は無理!!

会社の人に紹介したら聞かれました…さすがにwdiredでも時空は越えられません。

マークをつけたファイルをまとめて開く

diredではカーソル位置のファイル、またはマークをつけたファイル等に対してコマンドを実行します。ただデフォルトではマークをつけたファイルをまとめて開くコマンドが用意されていません。なぜだ!ということで、以下の設定をしておきます。キーバインドは"F"(ふつうに開く)と"V"(viewモードで開く)に割り当てています。

;; diredでマークをつけたファイルを開く
(eval-after-load "dired"
  '(progn
     (define-key dired-mode-map (kbd "F") 'my-dired-find-marked-files)
     (defun my-dired-find-marked-files (&optional arg)
       "Open each of the marked files, or the file under the point, or when prefix arg, the next N files "
       (interactive "P")
       (let* ((fn-list (dired-get-marked-files nil arg)))
         (mapc 'find-file fn-list)))))

;; diredでマークをつけたファイルをviewモードで開く
(eval-after-load "dired"
  '(progn
     (define-key dired-mode-map (kbd "V") 'my-dired-view-marked-files)
     (defun my-dired-view-marked-files (&optional arg)
       "Open each of the marked files, or the file under the point, or when prefix arg, the next N files "
       (interactive "P")
       (let* ((fn-list (dired-get-marked-files nil arg)))
         (mapc 'view-file fn-list)))))

viewモードでまとめて開けば、q,q,q...として抜けられるので、設定ファイルをちょっと確認したい時に便利です。ちなみにviewモードで開いて閉じるとバッファが残りません。

参考:API Only - Stack Exchange

dired-x

dired-xはEmacs標準でついてくるelispです。.emacsに以下の行を追加します。

;; dired-x
(require 'dired-x)

C-x C-jでカレントバッファのディレクトリに移動できたり(SKK使いの人はキーバインドを変更する必要があるかもしれませんが)、*.で.elと入力すれば拡張子が.elファイルにマークをつけられたりします。

問題は、dired-xでもマークをつけたファイルを開くコマンドが用意されているということです。ただdired-xで定義されている方はウインドウを上下に分割してしまいます。2つくらいならいいのですが、3つ4つとなるとうっとうしい。それともうひとつ、"V"には、dired-do-run-mailというコマンドが割り当てられています。
これを解決するためフックを使って、"C-f"で分割して開くように、mailの方は使わないので無効にします。

;; dired-x
(require 'dired-x)
(add-hook 'dired-load-hook
          (lambda ()
            (dired-mode-map (kbd "V") 'my-dired-view-marking-files)
	    (dired-mode-map (kbd "C-f") 'dired-do-find-marked-files)))

まとめ

以上、diredのTipsでした。しょぼい記事ですみません。。
まぁdiredは基本機能だけでもとても奥が深いので、普段あまり使わないという人はまずdired-modeで bとか mしてみるといいと思います。そしてあの手この手で攻めてあげてください。
ではでは。

key-chord試行錯誤中

最近、key-chordの設定にはまってます。
key-chordとはキー同時押しでコマンドを実行するelispで、頻繁に使うけど面倒なキーバインドのコマンドに割り当て直すといい感じです。

リージョン選択(松山智大)

ありえるえりあ
とかを参考にさせてもらって、半分以上コピペですが今の割り当て状況はこんな感じ。覚えてないのとか使ってないのも結構あるけど…

(key-chord-define-global "jk" 'view-mode)
(key-chord-define-global "dw" 'kill-word*)
(key-chord-define-global "yw" 'copy-word)
(key-chord-define-global "vw" 'mark-word*)
(key-chord-define-global "ds" 'kill-sexp*)
(key-chord-define-global "ys" 'copy-sexp)
(key-chord-define-global "vs" 'mark-sexp*)
(key-chord-define-global "dq" 'kill-string)
(key-chord-define-global "yq" 'copy-string)
(key-chord-define-global "vq" 'mark-string)
(key-chord-define-global "dl" 'kill-up-list)
(key-chord-define-global "yl" 'copy-up-list)
(key-chord-define-global "vl" 'mark-up-list)
(key-chord-define-global "nm" 'copy-line)
(key-chord-define-global "nj" 'kill-line)
(key-chord-define-global "lm" 'mark-line)
(key-chord-define-global ",."     "<>\C-b")
(key-chord-define-global "[]"     "{}\C-b")
(key-chord-define-global "89"     "()\C-b")
(key-chord-define-global "w2"     "\"\"\C-b")
;; (key-chord-define-global "00" 'delete-window)
;; (key-chord-define-global "11" 'delete-other-windows)
;; (key-chord-define-global "22" 'split-window-vertically)
;; (key-chord-define-global "33" 'split-window-horizontally)
(key-chord-define-global "mk" 'kill-buffer)
(key-chord-define-global "ql" 'windmove-right)
(key-chord-define-global "qh" 'windmove-left)
(key-chord-define-global "qj" 'windmove-down)
(key-chord-define-global "qk" 'windmove-up)

上のリンク先を読んでもらえるとわかりますが、kill-word*からmark-up-listのコマンドはthing-opt.elのインストールが必要です。
"00"や"11"は誤爆の危険性が高いので保留。なにかいいのないかなー。
あとcopy-lineだと改行が入るから、これもそのうち変更したい。vimの行コピーって改行はどうなっているんでしょう。
<>や""といったカッコ系はカーソルも戻してるので便利です。「対応するカッコ自動で挿入してたらいらないよね?」と言われたらそれまでなんですけど。。

まぁこんな素敵なkey-chordですが、設定しまくっている人が少ないのか、探し方が悪いのか、ネットで設定があんまり公開されていないのが残念です。紹介記事は多いのですが。ということで、みんなもっと公開してほしいなという話でした。