« 『着付けのヒミツ』:読んでみた編 | Main | コメント欄およびトラックバックを停止しました »



Tue, 15 Sep 2009

TwitterIrcGateway を使い、xyzzy の irc-mode を使って Twitter をしている人向け ReTweet

Posted at Tue, 15 Sep 2009 in computer::xyzzy

TwitterIrcGateway(以下TIG)の ReTweet 機能がうまく動かないので、irc-mode 側で実装してみました。~/.irc ファイルに追記して使います。

「現在カーソルがある行のつぶやき」をとってきて、書式を整えてくれるだけの簡単なお仕事です。TIG で TypebleMap を使用していることを前提としているので、動かない場合は8行目の正規表現を修正するなどしてみてください。

2009/12/10 修正:正規表現の部分を若干修正しました。

(defun tig-retweet ()
  "ReTweet"
  (interactive)
  (irc-check-connection)
  (irc-dialog-check-joined)
  (let (prompt msg)
	(goto-bol)
	(when (scan-buffer "^[0-2][0-9]:[0-6][0-9] <\\([A-Za-z0-9_]+\\)> \\([^]+\\)\\([0-9]+([a-z]+)\\)?$" :regexp t :no-dup nil) ;;現在行の発言をとるための正規表現
	  (setq prompt (format nil "ReTweet - ~A: "
						 (or irc-dialog-private
							 (irc-channel-name irc-dialog-channel))))
	  (setq msg (read-string prompt :default (concat msg " RT @" (match-string 1) ": " (match-string 2))))
	  (irc-dialog-post-buffered-privmsg (or irc-dialog-private
											(irc-channel-name irc-dialog-channel))
										msg))))
;キー設定。Ctrl-c i r に設定してあります。
(defvar *irc-prefix* '(#\C-c #\i))
(add-hook '*irc-dialog-mode-hook*
		  #'(lambda ()
			  (local-set-key `(,@*irc-prefix* #\r) 'tig-retweet))
		  )

« 『着付けのヒミツ』:読んでみた編 | Main | コメント欄およびトラックバックを停止しました »