%% irchat-2.4jp23 FAQ集 %% 1996/11/18版 by 菊地高広 %% Copyright (C) 1995,1996 KIKUCHI Takahiro ・irchat-2.4jpは従来とどこが違うの まず、従来のDialogue bufferにすべてが出るモード、および、 channel別に内容がbufferに出るモード、の2つのモードが存在します。 この2つのモードは、変数 irchat-channel-buffer-modeの値によって どちらのモードで起動されるかが変わりますが、起動後、C-c C-o によって 両モードの間を行き来することができます。 channel別bufferモードでは、従来のように C-c C-j (C-c <, C-c >)によって channelをぐるぐる切替えると、それに応じて Current channel (partner)専用の バッファが窓に現れます。デフォルトではfreeze状態(=scrollしない状態)に なっていますが、デフォルトの変更、もしくは、C-c C-f によって解除できます。 従来と同様に C-c SPC および C-c DEL にて、スクロールを自在にできます。 channel別bufferモードでは、起動直後は Private というバッファのみですが、 C-c j もしくは C-c j とすると、それぞれのバッファが 作成され、一番下(上)のモードラインにバッファの一覧が表示されます。そこに 書いてある数字を用いて、例えば C-c 3 などとすると、そのバッファへと 直接切替えることができます。10以上の番号のところへは、C-u 10 C-c j にて 直接移動することができます。また、C-c C-a にて前のバッファに戻って 行ったり来たりすることも容易です。なお、これらのバッファからは、 従来と同様、C-c C-p にて抜けることができます。 なお、channel別bufferモードでは従来と違って、特定のパートナーとの会話も チャネルと同様に専用バッファを用いて会話をすることができます。上記のように C-c j とすると、チャネルの時と同様に専用バッファが作られ、 チャネルバッファと同じ扱いで C-c j, <, >, 0-9 などで移動できます。 C-c C-p で抜けることができますが、これは専用バッファを用いないことを 意味します。一般に、そのパートナーとの専用バッファを持たない場合は、 Privateバッファに会話は記録されます。invite情報なども同様に記録されます。 Commands bufferにおいては、C-c r にてwindow configurationを整形できますが、 なんらかで他のバッファ上にカーソルがある時も r と押せば元に戻れます。 また、他のバッファにカーソルがある時は、SPC および DEL だけでスクロールが できますので、freeze状態へとトグルをおこなう f と併用すると便利です。 複数のチャネルに入っている場合で特定チャネルに専念している場合や、 席を外していて戻ってきた場合、それまでに行なわれたすべての会話を読んで 追おうとするには、各チャネル別に freezeをするかどうか設定できますので それぞれfreezeにしておきます(デフォルト)。そして、読むことに専念する場合は C-x o もしくは C-x 0 などでカレントチャネルバッファへ移動し、そこで SPC と DEL にてスクロールしたり、> や < で各チャネルを移動したりすると どれも1つのキー操作ですみますから便利です。もちろん、数字キーを押せば そのチャネルにダイレクトに移動できます。最後は r を押して復帰します。 それぞれのチャネルのバッファのモードラインの左端に表示される情報として、 Fはfreeze状態を意味し、C-c C-f でトグルで切り替えれます。同様に、 Bはbeep notice状態を意味し、C-c B でトグルで切り替えれます。これは、 そのチャネルで(orそのパートナーから)会話が起こった時、beepを鳴らして 知らせてくれます。たまにしか会話がないが重要なチャネルなどに便利です。 ・Unknown host と言われて IRC serverに接続できないのですが…? 使用しているemacs、もしくは使用している環境によっては、 name serverなどを引きに行かないためにサーバーへ接続しに行けない ことがあります。また、IP addressによってサーバーを指定しても、 IP address表記を理解しないこともあります。しかし、そのような場合には、 IRC server: [203.178.136.50] のように、サーバーのIP addressを[と]でくくって指定して下さい。 すると、irchatは dcc programを用いてサーバーへ接続しに行きます。 (この場合、使用しているirchatに添付のdccを用いて下さい。) ・カスタマイズをするには? 標準では、irchatは起動時に ~/.irchat_vars.el のファイルを読み込みます。 なお、このファイルは例えば次のように変更することもできます。 (setq irchat-variables-file "~/lisp/init-irc.el") そこのファイルで、以下のように、このファイルの中で各種設定をしておきます。 ・起動時に、自動的にチャネルへJOINするようにするには? (setq irchat-startup-channel-list '("#test" "#はっく:*.jp" "#てすと")) ・チャネルのキーを毎回打たなくてもよくするには? (irchat-channel-key "#ほげらった" "naisho") ・IRCサーバのホスト名やポート番号やパスワードなどを毎回打たなくてすむには? (setq irchat-server "irc.server.jp:6666:ServerPassword") ・行頭の時間を表示したくない場合は? (setq irchat-print-time nil) ・channel別bufferでの発言にもchannel名を添えてほしい場合は? (setq irchat-display-channel-always t) ・channel別bufferを作成時にfreeze状態じゃなくするには? (setq irchat-default-freeze-local nil) ・channel(partner)番号振付けを、join順でなく、自由に割り当てたい時は? (setq irchat-default-channel-binding '(nil nil "#ほげら" nil "#ぷに")) → #ほげら にjoinした時は3番、#ぷに にjoinした時は5番が割り振られる ・あるユーザの最後にprivmsgをしたのはどこか? (irchat-user-last-privmsg "nick") ・あるユーザの最後にprivmsgをしたのは何秒前か? (irchat-user-last-privmsg-time "nick") ・自分の入っているあるチャネルに、あるユーザもはいっているかどうか? (irchat-user-on-this-channel "nick" "#channel") ・CTCP (Client to Client Protocol) って、なあに? CTCPとは、IRC client間で主に会話以外の種々の情報のやりとりなどを 共通におこなうためのプロトコル及びそのしくみを指します。CTCPには いくつものコマンドがありますが、IRC clientの種類(含version)によって サポートされているコマンドの数も種類も異なります。以下に、 irchatにて現時点でサポートしているもののうち、主なものを挙げます。 C-c C-c p (ping) 相手との間のdelayをping/pongにより調べる C-c C-c t (time) 相手の時間を尋ねる C-c C-c v (version) 相手のclient versionを尋ねる C-c C-c u (userinfo) 相手のuser informationを尋ねる C-c C-c U (userinfo) 自分のuser informationを設定する なお、自分についての情報 (e-mail addressなどの静的な情報から、 現在食事中などの動的な情報) は、userinfoにて示すのが望ましいです。 (nick changeやaway messageは、世界中へのbroadcastとなることをお忘れなく!!) ちなみに、このuserinfoは以下のように初期値を設定しておくこともできます。 (setq irchat-ctcp-userinfo "ほげほげ") ・自分で拡張したCTCPのコマンドを受け付けるようにするには? 例えば、HOSTNAMEというリクエストが来たら自分のホスト名を返したい場合、 (defun irchat-ctcp-hostname-msg (from to rest) (irchat-ctcp-reply from (format "HOSTNAME :%s" (system-name))) (irchat-ctcp-message "HOSTNAME" from to)) (irchat-ctcp-add-clientinfo "HOSTNAME" "shows my hostname") と、します。一般に、irchat-ctcp-コマンド名-msg の関数を定義し、 irchat-ctcp-add-clientifoにて、対応可能なコマンドとして登録します。 ・自分で拡張したCTCPのコマンドを相手にリクエストできるようにするには? 例えば、HOSTNAMEというCTCPリクエストを送れるようにするには、 (defun irchat-Command-ctcp-hostname () (interactive) (irchat-Command-ctcp "HOSTNAME")) (define-key irchat-CTCP-command-map "h" 'irchat-Command-ctcp-hostname) (irchat-ctcp-add-to-list "HOSTNAME") と、します。一般に、irchat-Command-ctcp-コマンド名 の関数を定義し、 irchat-CTCP-comand-map へそれを登録します。上記の例では "h" として いるので、標準の設定では、C-c C-c h で使えるようになります。 ・自分の独自拡張のversion名をCTCP VERSIONで返すには? (setq irchat-version-plus "hogera1.15") ・DCC (Direct Client Connection) って、なあに? DCCとは、client同士がIRC serverを介さずに直接connectionを張って ファイルを送受したり、会話をしたり、やりとりをするしくみを指します。 一般的にはclient同士がなんら情報なしにconnectionを張ることはできない わけですが、この情報をIRC上でCTCPを用いて受け渡すことによって、 IRCをしながら例えばファイルの送受を簡単に行なうことができます。 また、DCCにて会話を行なうことによりIRC serverを介さないことで、 serverによる制限やserverの切断と無関係に会話を行なうことができます。 以下が、現在サポートされているDCC関係のコマンド概要の一覧です。 C-c C-d c (chat) DCCにて会話を行なうリクエストを出す C-c C-d g (get) DCCでファイルを受けとる/会話に応じる C-c C-d k (kill) DCCを中断する/拒否する C-c C-d l (list) DCCの現在の状態の一覧リストを出す C-c C-d s (send) DCCにてファイルを送るリクエストを出す なお、DCCの機能はemacs(elisp)単体では実現することが不可能ですので、 dccという補助プログラムによって実行されます。そのため、irchatの パッケージに含まれているdcc.cをコンパイルして、pathの通ったところに dccのプログラムを置いて下さい。また、dcc.cは配布されているirchatと必ず 同じものを用いて下さい。そうでない場合、動かないことがあります。 getやkillは、なにも指定しないと相手からOfferされているもののうち 一番上のものに適用されます。指定したものをget/killしたい場合は、 listにて番号を確認の上、C-u prefixにて番号を指定して行なって下さい。 DCCでのchatは、chat requestを出し、相手がgetにて応じることによって connectionが確立(establishedとでる)します。これ以降は、ircIIなどと 同様に、"nickname"のかわりに"=nickname"を指定することで会話できます。 例えば、C-c j =nickname RET とjoinすれば、そのbufferでやりとりできます。 ・キーが設定されているチャネルにjoinするには? C-u C-c j で、キーを尋ねてきますので、そこで入力します。 C-u - C-c j で、キーを入力する時に見ながら入力できるようになります。 ・チャネル変換表示機能とは? 長いチャネル名を用いている時、表示が長くなり見にくいこともあるため、 表示及びJOINなどをする時に登録された別名を用いることができます。 チャネルの別名は、%から始まる文字列を用いて実際のと区別をしています。 (setq irchat-channel-conversion-map '(("#長い長い名前" . "%短縮") ("#網管理" . "%網"))) 変換用のマップは上記のようにして与えることができます。さらに、 マップに存在しなかった場合、指定したマスクに対してのみ、 マスク付きチャネル名をマスクなしのものへと自動変換を行ないます。 (defvar irchat-channel-conversion-default-mask "*.jp") デフォルトのマスクは上記のように *.jp に宣言されている(変更可)ため、 日本国内だけに通用するチャネル名を用いている時には自動的に、 #網管理:*.jp <-> %網管理 と変換表示します。これは、JOINや、C-u prefixを使ってチャネル指定を しながらWHO,LIST,NAMES,MODEなどを行なう際にも有効です。 (例:C-u C-c l %はっく RET とすると、#はっく:*.jp のLISTが出る。) ・irchatを終了させる方法は? C-c q で終了させることができます。特に、終了時のメッセージを入力したい 時は、C-u C-c q とします。以下のようにあらかじめ設定も可能です。 (setq irchat-signoff-msg "さようなら〜") ・irchatの最新版はどこに? ftp://ftp.kyoto.wide.ad.jp/IRC/Newest/ の下にあります。 御質問や御要望及びbug情報などは、必ず最新版御使用の上お願いします。 ・irchatに対して要望や批判やbug情報など知らせたいことがあるときは? 重要なbug情報や、機能改善・追加案など、多くのみなさんと議論したいもの については、JIRCC-ML (Japan Internet-Relay-Chat Club)などを用いるの もいいと思いますし、また、IRCやmailにて個人宛による知らせも歓迎します。 なお、本ドキュメントについてはJIRCC-MLに引用することは差し支えありません。 JIRCCへの加入要望などは、jircc-request@irc.kyoto-u.ac.jpまでメールを お送り下さい。(手動登録ですが、この宛先ではMLの登録関係のみ受け付けます。)