このマニュアルは WeeChat チャットクライアントについての文書で、これは WeeChat の一部です。

この文書の最新版は以下のページにあります: http://weechat.org/doc

1. はじめに

WeeChat (Wee Enhanced Environment for Chat) は無料のチャットクライアントで、高速、軽量、多くのオペレーティングシステムで動くように設計されています。

このマニュアルは WeeChat の内部構造について書かれています:

  • リポジトリ (ソースコード、文書、…)

  • コーディングルール

  • 中核部の内部構造

  • プラグインの内部構造

  • WeeChat に貢献する方法

2. リポジトリ

WeeChat の主要なリポジトリは 2 つあります:

このマニュアルはコアリポジトリの解説です。

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 ページ (man weechat)

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 行)、

    • 日付、

    • 名前、

    • 電子メールアドレス、

    • ライセンス。