id:IMAKADO さんにバッファ作らずに使わずに正規表現マッチする方法教えてもらったのでちょっと短くできた。
(setq erc-prompt (lambda ()
(let* ((buffer (buffer-name))
(channel (when (string-match "\\(#[^@]+\\)" buffer)
(match-string 1 buffer))))
(if channel
(erc-propertize (concat channel ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
(if (and (boundp 'erc-default-recipients) (erc-default-target))
(erc-propertize (concat (erc-default-target) ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
(erc-propertize (concat "ERC>") 'read-only t 'rear-nonsticky t 'front-nonsticky t))))))
ERCのプロンプトにチャンネル名表示
というネタは EmacsWiki: Erc Configuration の Channel-specific prompts に書いてあるんだけど、そこにも書いてあるとおり、初回表示時にはチャンネル名にならないのでこんな感じにハック。
(setq erc-prompt (lambda ()
(let* ((buffer (buffer-name))
(channel (with-temp-buffer
(insert buffer)
(beginning-of-buffer)
(when (re-search-forward "\\(#[^@]+\\)" nil t)
(match-string 1)))))
(if channel
(erc-propertize (concat channel ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
(if (and (boundp 'erc-default-recipients) (erc-default-target))
(erc-propertize (concat (erc-default-target) ">") 'read-only t 'rear-nonsticky t 'front-nonsticky t)
(erc-propertize (concat "ERC>") 'read-only t 'rear-nonsticky t 'front-nonsticky t))))))
バッファ名からチャンネル名部分とるようにした感じ。
1:1 トークとかどうなるかわからないのでとりあえず EmacsWiki のルーチンも書いておいた。
dopplr.el
最近 ERC つかって IRC も emacs でやるようにしたのだけど、昔 irssi 用に作った dopplr.pl とおなじことが emacs でもしたくなったのでちょっと書いてみたりした。
使い方は dopplr.pl と同じで最初に
(setq dopplr-api-token "your api token") ; M-x customize-group RET dopplr でもできる
しておいて、あとは
M-x dopplr-local-clock RET miyagawa
するという感じになっています。
dopplr.el などとたいそうな名前ですがまだこれしか作ってません。
はじめて設定以外で elisp 書いたけどむずかしい。すごいぐちゃぐちゃになってしまった。絶対もっとうまく書けるはず。
OSXで快適ビットマップフォント生活
OSX の良いところの一つにアンチエイリアスの効いたきれいなフォントがあげられると思います。
ただ、ターミナルやエディタなどでそう言うフォントを使用するとどうしても視認性の問題から文字サイズを大きくする必要があり、1画面あたりの情報量が減ってしまいます。
また単純に僕がビットマップフォントが好きだという理由もあり、ずっと OSX でもビットマップフォントで開発したいなーと思ってました。
しかし、Terminal.app や iTerm できれいに日本語を表示できるビットマップフォントを見つけられず、やむを得ずアンチエイリアスしてました。 Osaka フォントとか、CarbonEmacs だとビットマップ表示で日本語きれいにひょうじできるのにTerminal.app やiTerm だとガタガタになってしまうし。。
で、あきらめてたんですが、モトヤシーダというフォントならいけるよという話を聞いて設定してみたところわりときれいに表示させることが出来ました。
モトヤシーダは
こちらのサイトで販売されているのですが、お試しフリーフォントというところに入っていますのでとりあえず無料で試せます。僕はWin版をダウンロードしてCrossOver Macで自己解凍exeを展開しました。ただのlhaの自己解凍形式のようなのでlhaコマンドでも行けるそうです。
そんなわけで Terminal.app + iTerm から CarbonEmacs + iTerm に移行しました。
僕が愛用している CodingFontTobi というフォントは ttf 版だとなぜか 16pt 設定で 11pt 相当の表示というなぞの状態になっていて、日本語をうまく混在表示させるためにはasciiとそれ以外で違うフォント設定を使えるアプリケーションを使う必要があります。
CarbonEmacsとiTermならそれができるということですね。CodingFontTobi 16pt + モトヤシーダ(EmacsではOsaka) 11pt という設定にしてます。
これでやっと OSX でも満足行く表示になりました。やっぱりこっちのほうがいいですなー。
また、他にもいいビットマップフォントをご存じの方いらっしゃいましたら是非とも教えてください!!
二重connect
Kamaitachi入門(その4) - ダウンロードたけし(寅年)の日記
なのでconnectについてはKamaitachi側ではon_connectとon_invoke_connectの2つをdispatchしていることになりますね。なんで2重に待ち構えるような構成にしてるんだろ?なにか意味があるような気がしますが、よくわかりません。
on_connect はTCP接続確立時のハンドラ、on_invoke_connect は他の関数呼び出しと同様 Flash Player から connect 関数がよばれたときに呼ばれるハンドラです。
RTMP は正直なんでこうなんだろーっていう理解不能な仕様が結構ありますのでサーバー実装だけみてると結構混乱すると思います。
クライアント側も参照すると多少マシになります。
いまは Flex SDK を使用すればフリーで as3 な swf をつくることができますので、RTMP 実装で学ぶ as3 入門というのはどうでしょうか。
あ、wonderfl もオススメですよ。
CarbonEmacs + CodingFontTobi
フォント設定もさらしておく。
`~/.emacs.d/conf/carbon-emacs-05font.el
;; i <3 bitmap font
(setq mac-allow-anti-aliasing nil)
(create-fontset-from-fontset-spec
(concat
"-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-tobi"
",ascii:-apple-codingfonttobi-medium-r-normal--16-120-72-72-m-120-*-*"
",japanese-jisx0208:-apple-osaka-*"
",katakana-jisx0201:-apple-osaka-*"))
(create-fontset-from-fontset-spec
(concat
"-*-fixed-medium-r-normal--10-*-*-*-*-*-fontset-proggy"
",ascii:-apple-proggycleanttsz-medium-r-normal--16-120-72-72-m-120-*-*"
",japanese-jisx0208:-apple-osaka-*"
",katakana-jisx0201:-apple-osaka-*"))
(set-default-font "fontset-tobi")
CodingFontTobi と Proggy のフォントセットを定義して気分で使い分けてる。
デフォルトの Monaco+ヒラギノ も捨てがたく、たまに使いたくなったりするのでアンチエイリアスは
;; アンチエイリアストグル
(defun my-mac-toggle-antialias ()
(interactive)
(if mac-allow-anti-aliasing
(setq mac-allow-anti-aliasing nil)
(setq mac-allow-anti-aliasing t)))
こんなんでトグルできるようにしてる。この関数よびだしたあと画面が更新されると反映される。
こういう環境依存のコードは今までは自前で環境見てロードしていたのだけど、id:IMAKADO さんが公開してくれた init-loader 使うと carbon-emacs-* とか言うファイルは CarbonEmacs の時だけ読む、とかできて便利。
CarbonEmacsを使ってみる
先週 id:IMAKADO さんにあって、emacs 使いこなしててかっこよかったので影響されて僕も GUI な emacs が使いたくなったのでこの間書いた Cocoa Emacs を使い出そうとしたんだけど、なんかどうがんばってもバッファを縦分割したときのボーダーを表示させることが出来ないという理由であきらめた。(フリンジは消したかった)
なので CarbonEmacs を入れた。こっちはなんかボーダー出た。
Cocoa Emacs なら multitty で端末内でファイル開いちゃえばいいんだけど、CarbonEmacs にはそれがないので普通に emacsclient で開き、閉じたら端末にフォーカスが戻るという設定を書いた。
具体的には emacsclient で開いたときは勝手に CarbonEmacs がアクティブになるので、CarbonEmacs 側で閉じたときに端末に戻るように、
;; emacsclientで開いた端末をアクティブにする。とりあえずiTerm決めうち
(add-hook 'server-done-hook
(lambda ()
(do-applescript "tell application \"iTerm\"
activate
end")))
とするだけでOKだった。
TypePad Connect の使い方がわからない
TypePad Connect よさそうなので使ってみようと思ったんだけど、発行されたコード貼り付けてもなんにも出ない。
Firebug でみると embed.js というのが 500 になってるっぽい。なんか手順ちがうのかな、それともサービス側の問題なのかなぁ。
とりあえず、このサイトの既存のコメント欄の下にコード貼り付けてみてあるんだけど、なんにも出てない状況。わかる人教えて!
追記
なんかおかしかったっぽい。直してもらった!
最後のタブ閉じたとき about:blank を開く設定
OSX にしてから Firefox で最後のタブを閉じたときにウィンドウが消えてしまうのが嫌だなーとおもっていたけど、いまふと about:config を close で検索してみたりしたら
browser.tabs.closeWindowWithLastTab
という項目が見つかったので、試しにそれをトグルしてあげたら希望通りの動作になった。
これがしたかった。満足。
outputzのdailyランクをgrowl通知するスクリプト
emacs と irssi で入力した文字数を outputz に投稿してるわけですが、outputz での順位を定期的に通知されたらやる気が出るんじゃないかなーとおもってoutputzでの順位をgrowl通知するスクリプトを書いてみた。
こんな感じになる。
あとはこれを CRON かなんかで回せば OK。

