このマニュアルは WeeChat チャットクライアントについての文書で、これは WeeChat の一部です。
この文書の最新版は以下のページにあります: http://weechat.org/doc
1. はじめに
WeeChat (Wee Enhanced Environment for Chat) は無料のチャットクライアントで、高速、軽量、多くのオペレーティングシステムで動くように設計されています。
このマニュアルは WeeChat の内部構造について書かれています:
-
リポジトリ (ソースコード、文書、…)
-
コーディングルール
-
中核部の内部構造
-
プラグインの内部構造
-
WeeChat に貢献する方法
2. リポジトリ
WeeChat の主要なリポジトリは 2 つあります:
-
コアリポジトリ: ソースコードと文書が含まれています、 URL は: https://github.com/weechat/weechat
-
スクリプト: weechat.org に投稿された 公式 スクリプト、 URL は: https://github.com/weechat/scripts
このマニュアルはコアリポジトリの解説です。
2.1. 概要
主な WeeChat ディレクトリは:
ディレクトリ | 説明 |
---|---|
src/ |
ソースコードのルートディレクトリ |
core/ |
コア関数: エントリポイント、内部構造体 |
gui/ |
バッファ、ウィンドウ、… を操作する関数 (全てのインターフェイスで使う) |
curses/ |
curses インターフェイス |
plugins/ |
プラグインとスクリプト向け API |
alias/ |
alias プラグイン |
aspell/ |
aspell プラグイン |
charset/ |
charset プラグイン |
exec/ |
exec プラグイン |
fifo/ |
fifo プラグイン (WeeChat にコマンドを送信する FIFO パイプ) |
irc/ |
IRC (Internet Relay Chat) プラグイン |
logger/ |
logger プラグイン (表示されたメッセージをファイルに書き込む) |
relay/ |
relay プラグイン (irc プロキシ + リモートインターフェイス用の中継) |
script/ |
スクリプトマネージャ |
python/ |
python スクリプト用 API |
perl/ |
perl スクリプト用 API |
ruby/ |
ruby スクリプト用 API |
lua/ |
lua スクリプト用 API |
tcl/ |
tcl スクリプト用 API |
guile/ |
guile (scheme) スクリプト用 API |
trigger/ |
trigger プラグイン |
xfer/ |
xfer (IRC DCC ファイル/チャット) |
tests/ |
テスト |
unit/ |
単体テスト |
core/ |
コア関数の単体テスト |
doc/ |
文書 |
po/ |
翻訳ファイル (gettext) |
debian/ |
Debian パッケージ用 |
2.2. ソースコード
2.2.1. コア
WeeChat "core" は以下のディレクトリに配置されています:
-
src/core/: コア関数 (データ操作用)
-
src/gui/: インターフェイスの関数 (バッファ、ウィンドウ、…)
パス/ファイル名 | 説明 |
---|---|
core/ |
コア関数: エントリポイント、内部構造体 |
weechat.c |
主要関数: コマンドラインオプション、起動 |
wee-backtrace.c |
クラッシュした際にバックトレースを表示 |
wee-command.c |
WeeChat コアコマンド |
wee-completion.c |
デフォルト補完 |
wee-config-file.c |
設定ファイル管理 |
wee-config.c |
WeeChat コアの設定オプション (weechat.conf ファイル) |
wee-debug.c |
デバッグ用関数 |
wee-eval.c |
内部変数へのリファレンスを含む式を評価 |
wee-hashtable.c |
ハッシュテーブル |
wee-hdata.c |
hdata (ハッシュテーブルを用いて直接データを読む) |
wee-hook.c |
フック |
wee-infolist.c |
インフォリスト (オブジェクトに関するデータを含むリスト) |
wee-input.c |
コマンドおよびテキストの入力 |
wee-list.c |
ソート済みリスト |
wee-log.c |
WeeChat ログファイル (weechat.log) に書き込む |
wee-network.c |
ネットワーク関数 (サーバやプロキシへの接続) |
wee-proxy.c |
プロキシ管理 |
wee-secure.c |
安全なデータオプション (sec.conf ファイル) |
wee-string.c |
文字列関数 |
wee-upgrade-file.c |
内部アップグレードシステム |
wee-upgrade.c |
WeeChat コアのアップグレード (バッファ、行、履歴、…) |
wee-url.c |
URL 転送 (libcurl を使う) |
wee-utf8.c |
UTF-8 関数 |
wee-util.c |
その他の関数 |
wee-version.c |
WeeChat バージョンについての関数 |
gui/ |
バッファ、ウィンドウなどの関数 (全てのインターフェイスで利用) |
gui-bar-item.c |
バー要素 |
gui-bar-window.c |
バーウィンドウ |
gui-bar.c |
バー |
gui-buffer.c |
バッファ |
gui-chat.c |
チャット関数 (メッセージの表示、…) |
gui-color.c |
色関数 |
gui-completion.c |
コマンドラインの補完 |
gui-cursor.c |
カーソルモード (カーソルを自由に移動) |
gui-filter.c |
フィルタ |
gui-focus.c |
フォーカスについての関数 (カーソルモードとマウス用) |
gui-history.c |
コマンド及びバッファに保存されたテキスト |
gui-hotlist.c |
ホットリスト管理 (活発なバッファのリスト) |
gui-input.c |
入力関数 (入力バー) |
gui-key.c |
キーボード関数 |
gui-layout.c |
レイアウト |
gui-line.c |
バッファ中の行 |
gui-mouse.c |
マウス |
gui-nicklist.c |
バッファのニックネームリスト |
gui-window.c |
ウィンドウ |
curses/ |
curses インターフェイス |
gui-curses-bar-window.c |
バーウィンドウへの表示 |
gui-curses-chat.c |
チャットエリアへの表示 (メッセージ) |
gui-curses-color.c |
色関数 |
gui-curses-key.c |
キーボード関数 (デフォルトキー、入力の読み取り) |
gui-curses-main.c |
WeeChat メインループ (キーボードやネットワークイベントの待ち受け) |
gui-curses-mouse.c |
マウス |
gui-curses-term.c |
ターミナルについての関数 |
gui-curses-window.c |
ウィンドウ |
main.c |
エントリポイント |
2.2.2. プラグイン
パス/ファイル名 | 説明 |
---|---|
plugins/ |
プラグインのルートディレクトリ |
plugin.c |
プラグイン管理 (動的 C 言語ライブラリのロード/アンロード) |
plugin-api.c |
プラグイン API の追加関数 (WeeChat コア関数のラッパー) |
plugin-config.c |
プラグイン設定オプション (plugins.conf ファイル) |
plugin-script.c |
スクリプトプラグインの共用関数 |
plugin-script-api.c |
スクリプト API 関数: 一部のプラグイン API 関数のラッパー |
plugin-script-callback.c |
スクリプト用のコールバック管理 |
weechat-plugin.h |
WeeChat プラグインと一緒に配布されるヘッダファイル、プラグインのコンパイルに必要 |
alias/ |
alias プラグイン |
alias.c |
alias の主要関数 |
alias-config.c |
alias 設定オプション (alias.conf ファイル) |
alias-info.c |
alias の情報/インフォリスト/hdata |
aspell/ |
aspell プラグイン |
weechat-aspell.c |
aspell の主要関数 |
weechat-aspell-bar-item.c |
aspell バー要素 |
weechat-aspell-command.c |
aspell コマンド |
weechat-aspell-completion.c |
aspell 補完 |
weechat-aspell-config.c |
aspell 設定オプション (aspell.conf ファイル) |
weechat-aspell-info.c |
aspell の情報/インフォリスト/hdata |
weechat-aspell-speller.c |
スペルチェッカ管理 |
charset/ |
charset プラグイン |
charset.c |
charset 関数 |
exec/ |
Exec プラグイン |
exec.c |
exec の主要関数 |
exec-buffer.c |
Exec バッファ |
exec-command.c |
Exec コマンド |
exec-completion.c |
Exec 補完 |
exec-config.c |
Exec 設定オプション (exec.conf ファイル) |
fifo/ |
fifo プラグイン |
fifo.c |
fifo の主要関数 |
fifo-info.c |
fifo の情報/インフォリスト/hdata |
guile/ |
guile (scheme) プラグイン |
weechat-guile.c |
guile の主要関数 (スクリプトのロード/アンロード、guile コードの実行) |
weechat-guile-api.c |
guile スクリプト作成 API 関数 |
irc/ |
IRC (Internet Relay Chat) プラグイン |
irc.c |
IRC の主要関数 |
irc-bar-item.c |
IRC バー要素 |
irc-buffer.c |
IRC バッファ |
irc-channel.c |
IRC チャンネル |
irc-color.c |
IRC 色 |
irc-command.c |
IRC コマンド |
irc-completion.c |
IRC 補完 |
irc-config.c |
IRC 設定オプション (irc.conf ファイル) |
irc-ctcp.c |
IRC CTCP |
irc-debug.c |
IRC デバッグ関数 |
irc-ignore.c |
IRC 無視 |
irc-info.c |
IRC の情報/インフォリスト/hdata |
irc-input.c |
コマンドおよびテキストの入力 |
irc-message.c |
IRC メッセージを操作する関数 |
irc-mode.c |
チャンネルおよびニックネームのモードを操作する関数 |
irc-msgbuffer.c |
IRC メッセージを送るバッファ |
irc-nick.c |
IRC ニックネーム |
irc-notify.c |
IRC 通知リスト |
irc-protocol.c |
IRC プロトコル (RFC 1459/2810/2811/2812/2813) |
irc-raw.c |
IRC 生バッファ |
irc-redirect.c |
IRC コマンド出力のリダイレクト |
irc-sasl.c |
IRC サーバに対する SASL 認証 |
irc-server.c |
IRC サーバとの入出力通信 |
irc-upgrade.c |
WeeChat をアップグレードする際の IRC データの保存および読み込み |
logger/ |
logger プラグイン |
logger.c |
logger の主要関数 |
logger-buffer.c |
logger バッファリスト管理 |
logger-config.c |
logger 設定オプション (logger.conf ファイル) |
logger-info.c |
logger の情報/インフォリスト/hdata |
logger-tail.c |
ファイル末尾の行を返す |
lua/ |
lua プラグイン |
weechat-lua.c |
lua の主要関数 (スクリプトのロード/アンロード、lua コードの実行) |
weechat-lua-api.c |
lua スクリプト作成 API 関数 |
perl/ |
perl プラグイン |
weechat-perl.c |
perl の主要関数 (スクリプトのロード/アンロード、perl コードの実行) |
weechat-perl-api.c |
perl スクリプト作成 API 関数 |
python/ |
python プラグイン |
weechat-python.c |
python の主要関数 (スクリプトのロード/アンロード、python コードの実行) |
weechat-python-api.c |
python スクリプト作成 API 関数 |
relay/ |
relay プラグイン (IRC プロキシとリモートインターフェイスへの中継) |
relay.c |
relay の主要関数 |
relay-buffer.c |
relay バッファ |
relay-client.c |
relay クライアント |
relay-command.c |
relay コマンド |
relay-completion.c |
relay 補完 |
relay-config.c |
relay 設定オプション (relay.conf ファイル) |
relay-info.c |
relay の情報/インフォリスト/hdata |
relay-network.c |
relay 用のネットワーク関数 |
relay-raw.c |
relay 生バッファ |
relay-server.c |
relay サーバ |
relay-upgrade.c |
WeeChat をアップグレードする際にデータを保存/回復 |
relay-websocket.c |
リレー用の websocket サーバ関数 (RFC 6455) |
irc/ |
IRC プロキシ |
relay-irc.c |
IRC プロキシの主要関数 |
weechat/ |
リモートインターフェイスへの中継 |
relay-weechat.c |
リモートインターフェイスへの中継 (主要関数) |
relay-weechat-msg.c |
クライアントにバイナリメッセージを送信 |
relay-weechat-nicklist.c |
ニックネームリスト関数 |
relay-weechat-protocol.c |
クライアントからのコマンドを読み取る |
ruby/ |
ruby プラグイン |
weechat-ruby.c |
ruby の主要関数 (スクリプトのロード/アンロード、ruby コードの実行) |
weechat-ruby-api.c |
ruby スクリプト作成 API 関数 |
script/ |
スクリプトマネージャ |
script.c |
スクリプトマネージャの主要関数 |
script-action.c |
スクリプトに対する操作 (ロード/アンロード、インストール/削除、…) |
script-buffer.c |
スクリプトマネージャ用のバッファ |
script-command.c |
スクリプトマネージャ用のコマンド |
script-completion.c |
スクリプトマネージャ用の補完 |
script-config.c |
スクリプトマネージャ用の設定オプション (script.conf ファイル) |
script-info.c |
スクリプトマネージャの情報/インフォリスト/hdata |
script-repo.c |
リポジトリファイルのダウンロードと読み込み |
tcl/ |
tcl プラグイン |
weechat-tcl.c |
tcl の主要関数 (スクリプトのロード/アンロード、tcl コードの実行) |
weechat-tcl-api.c |
tcl スクリプト作成 API 関数 |
trigger/ |
trigger プラグイン |
trigger.c |
trigger の主要関数 |
trigger-buffer.c |
trigger バッファ |
trigger-callback.c |
trigger コールバック |
trigger-command.c |
trigger コマンド |
trigger-completion.c |
trigger 補完 |
trigger-config.c |
trigger 設定オプション (trigger.conf ファイル) |
xfer/ |
xfer プラグイン (IRC DCC ファイル/チャット) |
xfer.c |
xfer の主要関数 |
xfer-buffer.c |
xfer バッファ |
xfer-chat.c |
xfer DCC チャット |
xfer-command.c |
xfer コマンド |
xfer-completion.c |
xfer 補完 |
xfer-config.c |
xfer 設定オプション (xfer.conf ファイル) |
xfer-dcc.c |
DCC ファイル転送 |
xfer-file.c |
xfer のファイル関数 |
xfer-info.c |
xfer の情報/インフォリスト/hdata |
xfer-network.c |
xfer のネットワーク関数 |
xfer-upgrade.c |
WeeChat をアップグレードする際の xfer データの保存および回復 |
2.2.3. テスト
パス/ファイル名 | 説明 |
---|---|
tests/ |
テスト用のルートディレクトリ |
tests.cpp |
テスト実行に使うプログラム |
unit/ |
単体テスト用のルートディレクトリ |
core/ |
core 向け単体テスト用のルートディレクトリ |
test-eval.cpp |
テスト: 式の評価 |
test-hashtble.cpp |
テスト: ハッシュテーブル |
test-hdata.cpp |
テスト: hdata |
test-infolist.cpp |
テスト: インフォリスト |
test-list.cpp |
テスト: リスト |
test-string.cpp |
テスト: 文字列 |
test-url.cpp |
テスト: URL |
test-utf8.cpp |
テスト: UTF-8 |
test-util.cpp |
テスト: ユーティリティ関数 |
2.3. 文書 / 翻訳
文書ファイル:
パス/ファイル名 | 説明 |
---|---|
doc/ |
文書 |
asciidoc.conf |
asciidoc 設定ファイル (マクロ) |
asciidoc.css |
asciidoc スタイル |
docgen.py |
autogen/ ディレクトリ内のファイルを作成する Python スクリプト (以下を参照) |
XX/ |
言語コード XX (言語コード: en、fr、de、it、…) 用のディレクトリ |
weechat.1.XX.asciidoc |
man ページ ( |
weechat_quickstart.XX.asciidoc |
クイックスタートガイド |
weechat_user.XX.asciidoc |
ユーザーガイド |
weechat_faq.XX.asciidoc |
FAQ |
weechat_plugin_api.XX.asciidoc |
プラグイン API リファレンス |
weechat_scripting.XX.asciidoc |
スクリプト作成ガイド |
weechat_tester.XX.asciidoc |
テスターガイド |
weechat_dev.XX.asciidoc |
開発者リファレンス (この文書) |
weechat_relay_protocol.XX.asciidoc |
リレープロトコル (リモートインターフェイス用) |
cmdline_options.XX.asciidoc |
コマンドラインオプション (man ページとユーザガイドに含まれるファイル) |
autogen/ |
docgen.py スクリプトが自動生成するファイル |
user/ |
ユーザーガイド用の自動生成ファイル (手作業による編集は禁止 !) |
plugin_api/ |
プラグイン API 用の自動生成ファイル (手作業による編集は禁止 !) |
WeeChat とプラグインの翻訳は gettext で行います、ファイルは po/ ディレクトリに含まれています:
パス/ファイル名 | 説明 |
---|---|
po/ |
翻訳ファイル (gettext) |
XX.po |
言語コード XX (言語コード: en、fr、de、it、…) への翻訳、翻訳元言語は英語 |
weechat.pot |
翻訳用テンプレート (自動作成) |
3. コーディングルール
3.1. 一般的なルール
-
ソースコード内で使用する、コメント、変数名、… は必ず英語 で記述してください (他の言語を使わないでください)
-
新しいファイルにはコピーライトヘッダを入れ、以下の情報を含めてください:
-
ファイルの短い説明 (1 行)、
-
日付、
-
名前、
-
電子メールアドレス、
-
ライセンス。
-