<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html40/strict.dtd"> <!-- $Id: appendix.html.in,v 1.15 2008/12/28 07:23:47 fuyu Exp $ --> <html lang="ja"> <head> <link rel="stylesheet" href="ochusha-help.css" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="author" content="ふゆ"> <title>おちゅ〜しゃ version 0.6.0.1 (おまけ)</title> </head> <body> <div class="PageBody"> <h1>ヘルプのおまけ</h1> <p>マニアックなカスタマイズを行うためのヒント。</p> <ul> <li><a href="#GtkActions">GtkAction</a> <ul> <li><a href="#GlobalActions">グローバルなGtkAction</a></li> <li><a href="#SelectionActions">現在のセレクションへのGtkAction</a></li> <li><a href="#CurrentViewActions">現在のViewへのGtkAction</a></li> <li><a href="#SpecificActions">特定のコンテキストへのGtkAction</a></li> </ul> </li> <li><a href="#tscore">Schemeインタプリタ</a> <ul> <li><a href="#tscore-use-case">おちゅ〜しゃとScheme</a></li> <li><a href="#tscore-ochusha">おちゅ〜しゃ特有の手続き</a></li> <li><a href="#customize-by-scheme">Schemeによるカスタマイズ</a></li> <li><a href="#tscore-spec">おちゅ〜しゃのSchemeシステムの仕様</a></li> <li><a href="#tscore-features">おちゅ〜しゃのSchemeシステムの特徴</a></li> <li><a href="#tscore-limitations">おちゅ〜しゃのSchemeシステムの制限</a></li> </ul> </li> </ul> <hr> <h2><a name="GtkActions">おちゅ〜しゃの定義するGtkAction</a></h2> <p>おちゅ〜しゃはGTK+-2.4で導入された<a href="http://library.gnome.org/devel/gtk/unstable/Actions.html">アクションベースのメニューやツールバー</a>という概念を用いて実装されています。</p> <p>そのためメニューやツールバーに現れる要素には、対応する<a href="http://library.gnome.org/devel/gtk/unstable/GtkAction.html">GtkAction</a>が定義されており、<a href="customize-more.html#GlobalKeyBindings">グローバルキーバインディングの設定</a>や<a href="customize-more.html#UI">メニュー・ツールバーのカスタマイズ</a>に用いることができます。</p> <p><code>GtkAction</code>は本質的にグローバルなオブジェクトであり、メニューバー、ツールバーおよびポップアップメニューの好きな所に、好きなように配置できるものです。</p> <p>おちゅ〜しゃの定義する<code>GtkAction</code>はその操作の対象の性質で分類すると以下に記すように、<a href="#GlobalActions">グローバルなもの</a>、<a href="#SelectionActions">現在のセレクションを対象とするもの</a>、<a href="#CurrentViewActions">現在キーボードフォーカスを持つ表示部分を対象とするもの</a>および<a href="#SpecificActions">特定のコンテキストを対象とするもの</a>と、大凡四通りに分類できます。</p> <p>以降の説明では次のような表記を用います。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">識別子</div> <div class="AccelPath">accel-path</div> <div class="ActionMnemonic">ニーモニック</div> <div class="ActionKeyBinding">キーバインディング</div> <div class="ActionDescription">GtkActionの説明</div> <div class="ActionSupplement"><p>補足</p></div> </div> </div> <p>「識別子」は<code>ochusha-ui.xml</code>内の<code>action</code>属性の値として用いる識別子です。</p> <p>「accel-path」は<code>ochusha-accel-map.rc</code>内の<code>accel_path</code>指定に用いる識別子です。</p> <p>「ニーモニック」はメニューなどに表れる、このGtkActionの表記です。</p> <p>「キーバインディング」はデフォルトのキーバインディングです。</p> <p>「GtkActionの説明」はこのGtkActionの説明です。</p> <p>「補足」は実装上の制限などに関する補足説明です。</p> <h3><a name="GlobalActions">グローバルなGtkAction</a></h3> <p>厳密にはおちゅ〜しゃ本体の<em>ウィンドウ</em>に関連付けられた<code>GtkAction</code>であり、<em>グローバル</em>という言葉ではやや語弊がありますが、基本的にウィンドウを一つしか開けない現状のおちゅ〜しゃでは「書き込みウィンドウ」などの一部の例外を除き、いつでも有効な<code>GtkAction</code>です。</p> <p>次のようなものがあり、主にメニューバーやおちゅ〜しゃの設定ダイアログに現れる要素に対応しています。</p> <h4>本質的にグローバルな<code>GtkAction</code></h4> <p>操作対象というモノを必要としないか、あるいは対象が常に存在するような操作に対応する<code>GtkAction</code>としては次のようなものが定義されています。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">OpenFile</div> <div class="AccelPath"><Actions>/OchushaActions/OpenFile</div> <div class="ActionMnemonic"><span class="not-implemented">ファイルを開く(<span class="accel">F</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ファイルを開きます。</div> <div class="ActionSupplement"> <p>実装されていません。</p> <p>指定されたファイルがおちゅ〜しゃの管理下にあるDATファイルならば対象のスレを開き、管理下になければそのファイルをインポートするという機能になる予定です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ClearCookies</div> <div class="AccelPath"><Actions>/OchushaActions/ClearCookies</div> <div class="ActionMnemonic">クッキーを消去する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">HTTPのCookieを一括消去します。</div> <div class="ActionSupplement"> <p>本当はウェブブラウザっぽく個々のCookieを選択的に消去するナイスなGUIが必要なのかもしれませんが、現状では余り使い道がないので一括消去の機能のみが実装されています。2ちゃんねるへの書き込み時に「ブラウザがおかしいですよん」などというエラーメッセージで書き込みに失敗した時などに使うかもしれません。</p> <p>おちゅ〜しゃを起動していない状態で<code>~/.ochusha/cookies.sqlite</code>を削除しても同じ効果を得られます。おちゅ〜しゃの実行中におちゅ〜しゃを終了させずに消せるという点が唯一の存在意義です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">OpenURL</div> <div class="AccelPath"><Actions>/OchushaActions/OpenURL</div> <div class="ActionMnemonic">URLを開く(<span class="accel">L</span>)</div> <div class="ActionKeyBinding">Ctrl+L</div> <div class="ActionDescription">URLを指定してスレ一覧やスレを開きます。おちゅ〜しゃで開けることが明らかではない(既知の掲示板のものではない)URLが与えられた場合には外部ウェブブラウザで開きます。</div> <div class="ActionSupplement"> <p><a href="explanation.html#NavigationToolbar">ナビゲーションツールバー</a>が表示されていれば、そのURLエントリにキーボードフォーカスが移り、それ以外の場合にはダイアログが表示されます。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">Quit</div> <div class="AccelPath"><Actions>/OchushaActions/Quit</div> <div class="ActionMnemonic">終了(<span class="accel">Q</span>)</div> <div class="ActionKeyBinding">Ctrl+Q</div> <div class="ActionDescription">おちゅ〜しゃを終了します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Stop</div> <div class="AccelPath"><Actions>/OchushaActions/Stop</div> <div class="ActionMnemonic">中止(<span class="accel">S</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在進行中のネットワークアクセスを停止させます。</div> <div class="ActionSupplement"> <p>画像へのアクセス待ち行列を放置しているので完全に機能しているとは言い難いですが、これはバグと言うべきでしょう。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">WorkOffline</div> <div class="AccelPath"><Actions>/OchushaActions/WorkOffline</div> <div class="ActionMnemonic">オフライン作業(<span class="accel">W</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">おちゅ〜しゃをネットワークにアクセスしないモードに切り替えます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Preferences</div> <div class="AccelPath"><Actions>/OchushaActions/Preferences</div> <div class="ActionMnemonic">設定(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">おちゅ〜しゃの設定ダイアログを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Login2chBe</div> <div class="AccelPath"><Actions>/BBS2chHelperActions/Login2chBe</div> <div class="ActionMnemonic">2ch Beログイン(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2004年11月頃(?)に2ちゃんねるで導入されたユーザー登録の一種であるBeにログインし、内部的にセッションIDを取得します。</div> </div> <div class="ActionItem"> <div class="ActionID">Login2chViewer</div> <div class="AccelPath"><Actions>/BBS2chHelperActions/Login2chViewer</div> <div class="ActionMnemonic">2chビューア(●)ログイン(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2chビューア(いわゆる●)を使用するためにログインし、セッションIDを取得します。</div> <div class="ActionSupplement"> <p>現在は旧版おちゅ〜しゃの実装を元に実験的に実装してあるだけで、既に作者の●の契約が切れているため、動作確認は一切されていません。現状ではうまく動いたとしても書き込み時などに●を用いることができるだけの、いわゆる負け犬専用実装になっています。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">FindAgain</div> <div class="AccelPath"><Actions>/MenubarActions/FindAgain</div> <div class="ActionMnemonic">次を検索(<span class="accel">G</span>)</div> <div class="ActionKeyBinding">Ctrl+G</div> <div class="ActionDescription">現在の検索文字列にマッチする次の要素を検索します。</div> <div class="ActionSupplement"> <p>検索バーの「次を検索(<span class="accel">N</span>)」に連動します。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">SearchBoardlist</div> <div class="AccelPath"><Actions>/BoardlistActions/SearchBoardlist</div> <div class="ActionMnemonic">板一覧の検索(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">板一覧で文字列検索を行います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RefreshBoardlist</div> <div class="AccelPath"><Actions>/BoardlistActions/RefreshBoardlist</div> <div class="ActionMnemonic">板一覧の更新(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2ちゃんねるの掲示板一覧を再確認し、サーバの移転への追従や新規カテゴリ・掲示板の板一覧への追加を行います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">AddBoard</div> <div class="AccelPath"><Actions>/BoardlistActions/AddBoard</div> <div class="ActionMnemonic">板の追加(<span class="accel">A</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">未知の掲示板へのアクセスにおちゅ〜しゃを利用可能にするために、掲示板を登録します。</div> <div class="ActionSupplement"> <p>追加できるのは2ちゃんねるの掲示板、2ちゃんねる互換、まちBBS、もしくはライブドアJBBS(旧したらばJBBS)掲示板のみです。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ManageBoardlist</div> <div class="AccelPath"><Actions>/BoardlistActions/ManageBoardlist</div> <div class="ActionMnemonic"><span class="not-implemented">板一覧の管理(<span class="accel">M</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">板一覧を編集するためのウィンドウを開きます。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ManageBookmarks</div> <div class="AccelPath"><Actions>/BookmarksActions/ManageBookmarks</div> <div class="ActionMnemonic"><span class="not-implemented">ブックマークの管理(<span class="accel">M</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ブックマークを編集するためのウィンドウを開きます。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">SelectListViewFonts</div> <div class="AccelPath"><Actions>/OchushaActions/SelectListViewFonts</div> <div class="ActionMnemonic">板一覧とスレ一覧表示のフォント選択(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">板一覧やブックマーク、スレ一覧の表示に用いるフォントを設定します。</div> <div class="ActionSupplement"> <p>「板一覧とスレ一覧表示のフォント選択」となっているのは、旧おちゅ〜しゃ時代の名残です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">SelectThreadViewFonts</div> <div class="AccelPath"><Actions>/OchushaActions/SelectThreadViewFonts</div> <div class="ActionMnemonic">スレ表示のフォント選択(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレの表示に用いるフォントを設定します。</div> <div class="ActionSupplement"> <p>レスエディタや「俺様用のしおり」の表示にも同じフォントが使われます。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">DefaultThreadlistRule</div> <div class="AccelPath"><Actions>/BoardActions/DefaultThreadlistRule</div> <div class="ActionMnemonic">スレ一覧表示のデフォルト規則(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧表示のデフォルト規則を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RestoreAllBoards</div> <div class="AccelPath"><Actions>/BoardActions/RestoreAllBoards</div> <div class="ActionMnemonic">全ての板の修復</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">持っているはずのスレが一覧に表示されていないことに気付いたユーザ、あるいは、おちゅ〜しゃの実装時にバグを埋め込んでスレの情報を壊した時の作者が使うと、手持ちのDATファイル群を漁ってある程度の情報を復元してくれるツールを起動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Notification</div> <div class="AccelPath"><Actions>/OchushaActions/Notification</div> <div class="ActionMnemonic">通知(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">サーバ移転時などに、その情報を表示するウィンドウを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DebugConsole</div> <div class="AccelPath"><Actions>/OchushaActions/DebugConsole</div> <div class="ActionMnemonic">デバッグコンソール(<span class="accel">D</span>)</div> <div class="ActionKeyBinding">Ctrl+Shift+J</div> <div class="ActionDescription">ネットワークアクセスの状況、経過、結果などデバッグ向きの情報を表示するウィンドウを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">SchemeConsole</div> <div class="AccelPath"><Actions>/OchushaActions/SchemeConsole</div> <div class="ActionMnemonic">Schemeコンソール(<span class="accel">S</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">Scheme手続きの出力を表示するウィンドウを開きます。Scheme手続きの実行時に発生したエラーもここに表示されます。</div> <div class="ActionSupplement"> <p>将来的にはEmacsのlisp-interactionモードっぽくしたいと考えています。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">About</div> <div class="AccelPath"><Actions>/OchushaActions/About</div> <div class="ActionMnemonic">おちゅ〜しゃについて(<span class="accel">A</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">おちゅ〜しゃのバージョン情報やライセンス情報などを表示するウィンドウを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Help</div> <div class="AccelPath"><Actions>/OchushaActions/Help</div> <div class="ActionMnemonic">ヘルプ目次(<span class="accel">H</span>)</div> <div class="ActionKeyBinding">F1</div> <div class="ActionDescription">ヘルプの目次ページを開きます。</div> <div class="ActionSupplement"></div> </div> </div> <h4>現在表示されているスレ一覧を操作対象とする<code>GtkAction</code></h4> <p>操作対象が「現在表示されているスレ一覧」と固定されている<code>GtkAction</code>としては次のようなものが定義されています。</p> <p>スレ一覧が表示されていない場合、これらの<code>GtkAction</code>はinsensitive(無反応状態)になります。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">ThreadlistTabs</div> <div class="AccelPath"><Actions>/ViewManagerActions/ThreadlistTabs</div> <div class="ActionMnemonic">スレ一覧のタブ(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在スレ一覧ペインに表示されているタブの名前を表示します。またスレ一覧ペインで開かれているスレ一覧から表示するタブを選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardArrowLeft</div> <div class="AccelPath"><Actions>/ViewManagerActions/BoardArrowLeft</div> <div class="ActionMnemonic">左の板</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧タブの左のタブに移ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardArrowRight</div> <div class="AccelPath"><Actions>/ViewManagerActions/BoardArrowRight</div> <div class="ActionMnemonic">右の板</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧タブの右のタブに移ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GoBackThreadlist</div> <div class="AccelPath"><Actions>/BoardActions/GoBackThreadlist</div> <div class="ActionMnemonic">前のスレ一覧(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在のスレ一覧タブで直前に開いていたスレ一覧に戻ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GoForwardThreadlist</div> <div class="AccelPath"><Actions>/BoardActions/GoForwardThreadlist</div> <div class="ActionMnemonic">次のスレ一覧(<span class="accel">F</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在のスレ一覧タブで直後に開いたスレ一覧に戻ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardProperties</div> <div class="AccelPath"><Actions>/BoardActions/BoardProperties</div> <div class="ActionMnemonic">板の情報(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在のスレ一覧タブに表示されている板のプロパティを開きます。板固有の設定なども行えます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">NewThread</div> <div class="AccelPath"><Actions>/BoardActions/NewThread</div> <div class="ActionMnemonic">新規スレッド(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧に対応する掲示板で新規スレッドを立てるためのウィンドウを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadlistRule</div> <div class="AccelPath"><Actions>/BoardActions/ThreadlistRule</div> <div class="ActionMnemonic">現在のスレ一覧表示の規則(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧に適用する表示規則を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CloseCurrentThreadlist</div> <div class="AccelPath"><Actions>/BoardViewManagerActions/CloseCurrentThreadlist</div> <div class="ActionMnemonic">このスレ一覧を閉じる(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧を閉じます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">SearchThreadlist</div> <div class="AccelPath"><Actions>/BoardViewManagerActions/SearchThreadlist</div> <div class="ActionMnemonic">スレ一覧の検索(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧で文字列検索を行います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RefreshThreadlist</div> <div class="AccelPath"><Actions>/BoardViewManagerActions/RefreshThreadlist</div> <div class="ActionMnemonic">スレ一覧の更新(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧を更新します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BookmarkCurrentBoard</div> <div class="AccelPath"><Actions>/BoardViewManagerActions/BookmarkCurrentBoard</div> <div class="ActionMnemonic">この板をブックマーク(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧に対応する板をブックマークします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardInfo</div> <div class="AccelPath"><Actions>/BoardViewManagerActions/BoardInfo</div> <div class="ActionMnemonic">板の情報(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレ一覧に対応する板のプロパティを開きます。板固有の設定なども行えます。</div> <div class="ActionSupplement"></div> </div> </div> <h4>現在表示されているスレを操作対象とする<code>GtkAction</code></h4> <p>操作対象が「現在表示されているスレ」と固定されている<code>GtkAction</code>としては次のようなものが定義されています。</p> <p>スレが表示されていない場合、これらの<code>GtkAction</code>はinsensitive(無反応状態)になります。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">ThreadTabs</div> <div class="AccelPath"><Actions>/ViewManagerActions/ThreadTabs</div> <div class="ActionMnemonic">スレのタブ(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在スレペインに表示されているタブの名前を表示します。またスレペインで開かれているスレから表示するタブを選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadArrowLeft</div> <div class="AccelPath"><Actions>/ViewManagerActions/ThreadArrowLeft</div> <div class="ActionMnemonic">左のスレ</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレタブの左のタブに移ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadArrowRight</div> <div class="AccelPath"><Actions>/ViewManagerActions/ThreadArrowRight</div> <div class="ActionMnemonic">右のタブ</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレタブの右のタブに移ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">WriteResponse</div> <div class="AccelPath"><Actions>/ThreadViewActions/WriteResponse</div> <div class="ActionMnemonic">レスを書く(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレにレスを投稿するためのウィンドウを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">JumpToBookmark</div> <div class="AccelPath"><Actions>/ThreadViewActions/JumpToBookmark</div> <div class="ActionMnemonic">しおりへ(<span class="accel">J</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレに挿入された「俺様用のしおり」の位置へ移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GotoBottom</div> <div class="AccelPath"><Actions>/ThreadViewActions/GotoBottom</div> <div class="ActionMnemonic">最後のレスへ(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレの最後のレスへ移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GotoTop</div> <div class="AccelPath"><Actions>/ThreadViewActions/GotoTop</div> <div class="ActionMnemonic">最初のレスへ(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレの最初のレスへ移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GotoNext</div> <div class="AccelPath"><Actions>/ThreadViewActions/GotoNext</div> <div class="ActionMnemonic">次へ(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在のスレタブで直後に表示した位置もしくはページに移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GotoPrev</div> <div class="AccelPath"><Actions>/ThreadViewActions/GotoPrev</div> <div class="ActionMnemonic">前へ(<span class="accel">P</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在のスレタブで直前に表示していた位置もしくはページに移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ResetCurrentThread</div> <div class="AccelPath"><Actions>/ThreadViewActions/ResetCurrentThread</div> <div class="ActionMnemonic">スレをリセット</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを閉じて読まなかったことにします。この時、スレのDATファイルも削除されます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CloseCurrentThread</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/CloseCurrentThread</div> <div class="ActionMnemonic">このスレを閉じる(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを閉じます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">SearchThread</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/SearchThread</div> <div class="ActionMnemonic">スレの検索(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレで文字列検索を行います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RefreshThread</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/RefreshThread</div> <div class="ActionMnemonic">スレの更新(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを更新します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">AutoRefreshThread</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/AutoRefreshThread</div> <div class="ActionMnemonic">スレの自動更新</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレの自動更新を開始します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ResetThreadClose</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/ResetThreadClose</div> <div class="ActionMnemonic">リセット(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを閉じて読まなかったことにします。この時当該スレのDATファイルも削除されます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BookmarkCurrentThread</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/BookmarkCurrentThread</div> <div class="ActionMnemonic">このスレをブックマーク(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレをブックマークします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadInfo</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/ThreadInfo</div> <div class="ActionMnemonic">スレの情報(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレのプロパティを開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">OpenBoardCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/OpenBoardCM</div> <div class="ActionMnemonic">板を開く(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレの属する板を開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadInfoCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/ThreadInfoCM</div> <div class="ActionMnemonic">スレの情報(<span class="accel">I</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレのプロパティを開きます。</div> <div class="ActionSupplement"> <p>スレ表示内のコンテキストメニュー用にニーモニックだけを変えた<code>ThreadInfo</code>と同等の<code>GtkAction</code>です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">BookmarkThreadCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/BookmarkThreadCM</div> <div class="ActionMnemonic">このスレをブックマーク(<span class="accel">M</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレをブックマークします。</div> <div class="ActionSupplement"> <p>スレ表示内のコンテキストメニュー用にニーモニックだけを変えた<code>BookmarkCurrentThread</code>と同等の<code>GtkAction</code>です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">AutoRefreshThreadCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/AutoRefreshThreadCM</div> <div class="ActionMnemonic">スレの自動更新</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレの自動更新を開始します。</div> <div class="ActionSupplement"> <p><code>AutoRefreshThread</code>と同等です。というかダブリなので、いずれ削除します。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">RefreshThreadCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/RefreshThreadCM</div> <div class="ActionMnemonic">スレの更新(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを更新します。</div> <div class="ActionSupplement"> <p>スレ表示内のコンテキストメニュー用にニーモニックだけを変えた<code>RefreshThread</code>と同等の<code>GtkAction</code>です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">SearchThreadCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/SearchThreadCM</div> <div class="ActionMnemonic">スレの検索(<span class="accel">S</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレで文字列検索を行います。</div> <div class="ActionSupplement"> <p>スレ表示内のコンテキストメニュー用にニーモニックだけを変えた<code>SearchThread</code>と同等の<code>GtkAction</code>です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ResetThreadCloseCM</div> <div class="AccelPath"><Actions>/ThreadViewManagerActions/ResetThreadCloseCM</div> <div class="ActionMnemonic">スレをリセット</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">現在表示されているスレを閉じて読まなかったことにします。この時、スレのDATファイルも削除されます。</div> <div class="ActionSupplement"> <p><code>ResetCurrentThread</code>と同等です。というかダブリなので、いずれ削除します。</p> </div> </div> </div> <h4>おちゅ〜しゃの設定関連の<code>GtkAction</code></h4> <p>おちゅ〜しゃでは、設定ダイアログだけでなくメニューバーやクリッカブルアイコンでも同じ設定を変更することができます。そのため、大多数の設定関連要素は<code>GtkAction</code>として実装されています。</p> <p>以下にあげるものが設定関連の<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">NavigationToolbar</div> <div class="AccelPath"><Actions>/PreferenceActions/NavigationToolbar</div> <div class="ActionMnemonic">ナビゲーションツールバー(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription"><a href="explanation.html#NavigationToolbar">ナビゲーションツールバー</a>の表示・非表示を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadlistToolbar</div> <div class="AccelPath"><Actions>/PreferenceActions/ThreadlistToolbar</div> <div class="ActionMnemonic">スレ一覧ツールバー(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription"><a href="explanation.html#ThreadlistToolbar">スレ一覧ツールバー</a>の表示・非表示を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadToolbar</div> <div class="AccelPath"><Actions>/PreferenceActions/ThreadToolbar</div> <div class="ActionMnemonic">スレッドツールバー(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription"><a href="explanation.html#ThreadToolbar">スレッドツールバー</a>の表示・非表示を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardlistToolbar</div> <div class="AccelPath"><Actions>/PreferenceActions/BoardlistToolbar</div> <div class="ActionMnemonic"><span class="not-implemented">板一覧ツールバー(<span class="accel">D</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">板一覧ツールバーの表示・非表示を選択します。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">BookmarksToolbar</div> <div class="AccelPath"><Actions>/PreferenceActions/BookmarksToolbar</div> <div class="ActionMnemonic"><span class="not-implemented">ブックマークツールバー(<span class="accel">B</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ブックマークツールバーの表示・非表示を選択します。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">BoardlistSidebar</div> <div class="AccelPath"><Actions>/PreferenceActions/BoardlistSidebar</div> <div class="ActionMnemonic">板一覧(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">板一覧サイドバーの表示・非表示を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BookmarksSidebar</div> <div class="AccelPath"><Actions>/PreferenceActions/BookmarksSidebar</div> <div class="ActionMnemonic">ブックマーク(<span class="accel">B</span>)</div> <div class="ActionKeyBinding">Ctrl+B</div> <div class="ActionDescription">ブックマークサイドバーの表示・非表示を選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">HistorySidebar</div> <div class="AccelPath"><Actions>/PreferenceActions/HistorySidebar</div> <div class="ActionMnemonic"><span class="not-implemented">履歴(<span class="accel">S</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">履歴サイドバーの表示・非表示を選択します。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">PostHistorySidebar</div> <div class="AccelPath"><Actions>/PreferenceActions/PostHistorySidebar</div> <div class="ActionMnemonic"><span class="not-implemented">投稿履歴(<span class="accel">P</span>)</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">履歴サイドバーの表示・非表示を選択します。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ShowHiddenBoardlistItems</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowHiddenBoardlistItems</div> <div class="ActionMnemonic">隠された要素を表示</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription"><em>隠す</em>を設定された板一覧の板やフォルダも表示します。<em>隠す</em>を設定していた板やフォルダの<em>隠す</em>状態を解除する時に使います。</div> <div class="ActionSupplement"> <p>旧おちゅ〜しゃ時代から存在するために<code>ShowHiddenBoardlistItems</code>と名前が付いていますが、ブックマークなどの表示にも同じ設定が用いられます。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ShowHiddenThreads</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowHiddenThreads</div> <div class="ActionMnemonic">隠されたスレを表示</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription"><em>隠す</em>を設定されたスレもスレ一覧に表示します。<em>隠す</em>を設定していたスレの<em>隠す</em>状態を解除する時に使います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">VerticalPlacement</div> <div class="AccelPath"><Actions>/PreferenceActions/VerticalPlacement</div> <div class="ActionMnemonic">スレ一覧表示とスレ表示を垂直に配置する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧表示とスレ表示を垂直に配置します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DefaultOpenInTab</div> <div class="AccelPath"><Actions>/PreferenceActions/DefaultOpenInTab</div> <div class="ActionMnemonic">デフォルトでタブで開く</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">新しいページを開く時にタブで開くのをデフォルトにします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">SelectTabWhenOpened</div> <div class="AccelPath"><Actions>/PreferenceActions/SelectTabWhenOpened</div> <div class="ActionMnemonic">新しいタブを開いた時にそのタブを選択する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">新しいタブを開いた時にそのタブを選択します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">FocusFollowMouse</div> <div class="AccelPath"><Actions>/PreferenceActions/FocusFollowMouse</div> <div class="ActionMnemonic">マウスポインタに合わせてフォーカスを移動する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">マウスポインタの移動に合わせてキーボードフォーカスを移動します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EmbededResponseEditor</div> <div class="AccelPath"><Actions>/PreferenceActions/EmbededResponseEditor</div> <div class="ActionMnemonic">埋め込みレスエディタ(<span class="accel">E</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示ペイン下部の埋め込み型レスエディタの表示・非表示を切り替えます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PreferEmbededResponseEditor</div> <div class="AccelPath"><Actions>/PreferenceActions/PreferEmbededResponseEditor</div> <div class="ActionMnemonic">埋め込みレスエディタ優先</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">レスエディタ選択時に埋め込みレスエディタを優先します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShrinkableBoardTab</div> <div class="AccelPath"><Actions>/PreferenceActions/ShrinkableBoardTab</div> <div class="ActionMnemonic">板タブの縮小を許可する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧のタブブックマーク部分の縮小表示を許可します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BoardTabTooltips</div> <div class="AccelPath"><Actions>/PreferenceActions/BoardTabTooltips</div> <div class="ActionMnemonic">板タブのツールチップを表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧のタブブックマーク部分で板名をツールチップとして表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShowBoardTabAlways</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowBoardTabAlways</div> <div class="ActionMnemonic">板のタブを常に表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧のタブブックマーク部分を常に表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShowBoardPaneAlways</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowBoardPaneAlways</div> <div class="ActionMnemonic">スレ一覧表示ペインを常に表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ一覧表示ペインを常に表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShrinkableThreadTab</div> <div class="AccelPath"><Actions>/PreferenceActions/ShrinkableThreadTab</div> <div class="ActionMnemonic">スレタブの縮小を許可する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレのタブブックマーク部分の縮小表示を許可します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadTabTooltips</div> <div class="AccelPath"><Actions>/PreferenceActions/ThreadTabTooltips</div> <div class="ActionMnemonic">スレタブのツールチップを表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレのタブブックマーク部分でスレタイをツールチップとして表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShowThreadTabAlways</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowThreadTabAlways</div> <div class="ActionMnemonic">スレのタブを常に表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレのタブブックマーク部分を常に表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ShowThreadPaneAlways</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowThreadPaneAlways</div> <div class="ActionMnemonic">スレ表示ペインを常に表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示ペインを常に表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">TransparentABone</div> <div class="AccelPath"><Actions>/PreferenceActions/TransparentABone</div> <div class="ActionMnemonic">透明あぼーんを有効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ユーザの指示によりあぼーんされたレスを完全に非表示にします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DisablePopupABone</div> <div class="AccelPath"><Actions>/PreferenceActions/DisablePopupABone</div> <div class="ActionMnemonic">あぼーんレスのポップアップを無効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ユーザの指示によりあぼーんされたレスをポップアップ表示できないように表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DisableABone</div> <div class="AccelPath"><Actions>/PreferenceActions/DisableABone</div> <div class="ActionMnemonic">ローカルあぼーんを無効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">ユーザによるレス番指定のあぼーんを無効にします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableChainABone</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableChainABone</div> <div class="ActionMnemonic"><span class="not-implemented">連鎖あぼーんを有効にする</span></div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">連鎖あぼーんを有効にします。</div> <div class="ActionSupplement"> <p>実装されていません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ShowMailto</div> <div class="AccelPath"><Actions>/PreferenceActions/ShowMailto</div> <div class="ActionMnemonic">メイル欄をスレ内に表示</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">メイル欄の内容をスレ表示に含めて表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">BeIcon</div> <div class="AccelPath"><Actions>/PreferenceActions/BeIcon</div> <div class="ActionMnemonic">Beアイコン表示(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2008年9月の中頃に2ちゃんねるで導入された、(ウェブブラウザで見ると)アイコン持ちのユーザがBeでログイン中に書き込んだレスにアイコンが表示される機能に対応し、スレ内にアイコンを表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">InlineImage</div> <div class="AccelPath"><Actions>/PreferenceActions/InlineImage</div> <div class="ActionMnemonic">インライン画像表示(<span class="accel">I</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ内の画像っぽいリンクを自動的に開き、縮小して画像をスレ内のリンクの左に埋め込んで表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DownloadShownImagesOnly</div> <div class="AccelPath"><Actions>/PreferenceActions/DownloadShownImagesOnly</div> <div class="ActionMnemonic">表示されている画像のみダウンロードする(<span class="accel">D</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">おちゅ〜しゃにおいて画像ファイルのダウンロードはバックグラウンドで実行されます。そのため、実際に画像ファイルのダウンロードが始まろうとしている時には、切っ掛けとなったスレが閉じられている可能性があります。この場合に、待ち行列に並んでいる分の画像のダウンロードを取り止めます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">HideMyBookmark</div> <div class="AccelPath"><Actions>/PreferenceActions/HideMyBookmark</div> <div class="ActionMnemonic">俺様用しおりの自動挿入を抑制する(<span class="accel">S</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">各スレの既得・新着レス境界への「俺様用のしおり」の自動挿入を抑制します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PopupResponse</div> <div class="AccelPath"><Actions>/PreferenceActions/PopupResponse</div> <div class="ActionMnemonic">レスのポップアップを有効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示内のリンクにマウスポインタが入った時に、リンク先が同じスレである場合にレスの内容をポップアップ表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PopupImage</div> <div class="AccelPath"><Actions>/PreferenceActions/PopupImage</div> <div class="ActionMnemonic">ポップアップ画像表示(<span class="accel">P</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示内のリンクにマウスポインタが入った時に、それが画像っぽいリンクであるならば、対象を自動的に開き、ポップアップ表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PopupTitle</div> <div class="AccelPath"><Actions>/PreferenceActions/PopupTitle</div> <div class="ActionMnemonic">スレタイのポップアップを有効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示内のリンクにマウスポインタが入った時に、リンク先が別スレである場合にタイトルをポップアップ表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PopupID</div> <div class="AccelPath"><Actions>/PreferenceActions/PopupID</div> <div class="ActionMnemonic">IDポップアップを有効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">スレ表示のID部分のリンクにマウスポインタが入った時に、そのスレ内で同IDを持つレス番リンクを集めてポップアップ表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableProxyToRead</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableProxyToRead</div> <div class="ActionMnemonic">読み込み時にProxyサーバを使う</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">読み込み時にProxyサーバを使います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableProxyToPost</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableProxyToPost</div> <div class="ActionMnemonic">書き込み時にProxyサーバを使う</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">書き込み時にProxyサーバを使います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableProxyForImages</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableProxyForImages</div> <div class="ActionMnemonic">画像取得時にProxyサーバを使う</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">画像取得時にProxyサーバを使います。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableDebugConsole</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableDebugConsole</div> <div class="ActionMnemonic">デバッグコンソールの出力を有効にする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">デバッグ用メッセージをデバッグコンソールに表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">EnableSchemeConsole</div> <div class="AccelPath"><Actions>/PreferenceActions/EnableSchemeConsole</div> <div class="ActionMnemonic">出力をSchemeコンソールに表示する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">Schemeインタプリタからの出力をSchemeコンソールに表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Login2chBeAtStartup</div> <div class="AccelPath"><Actions>/PreferenceActions/Login2chBeAtStartup</div> <div class="ActionMnemonic">起動時に2ちゃんねるBe掲示板にログインする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">起動時に2ちゃんねるBe掲示板にログインします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Save2chBePasswd</div> <div class="AccelPath"><Actions>/PreferenceActions/Save2chBePasswd</div> <div class="ActionMnemonic">2ちゃんねるBe掲示板のパスワードを保存する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2ちゃんねるBe掲示板のパスワードを保存します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Login2chViewerAtStartup</div> <div class="AccelPath"><Actions>/PreferenceActions/Login2chViewerAtStartup</div> <div class="ActionMnemonic">起動時に2ちゃんねるビューア(●)にログインする</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">起動時に2ちゃんねるビューア(●)にログインします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">Save2chViewerPasswd</div> <div class="AccelPath"><Actions>/PreferenceActions/Save2chViewerPasswd</div> <div class="ActionMnemonic">2ちゃんねるビューア(●)のパスワードを保存する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">2ちゃんねるビューア(●)のパスワードを保存します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RestoreOpenedTabs</div> <div class="AccelPath"><Actions>/PreferenceActions/RestoreOpenedTabs</div> <div class="ActionMnemonic">起動時に前回終了時に開いていたタブを復元する</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">起動時に前回終了時に開いていたタブを復元します。</div> <div class="ActionSupplement"></div> </div> </div> <h3><a name="SelectionActions">現在のセレクションへのGtkAction</a></h3> <p>主にコンテキスト(ポップアップ)メニューとして用いられる<code>GtkAction</code>としては以下のようなものが定義されています。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">CutSelection</div> <div class="AccelPath"><Actions>/OchushaActions/CutSelection</div> <div class="ActionMnemonic">切り取り(<span class="accel">T</span>)</div> <div class="ActionKeyBinding">Ctrl+X</div> <div class="ActionDescription">現在のセレクションを切り取り、クリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopySelection</div> <div class="AccelPath"><Actions>/OchushaActions/CopySelection</div> <div class="ActionMnemonic">コピー(<span class="accel">C</span>)</div> <div class="ActionKeyBinding">Ctrl+C</div> <div class="ActionDescription">現在のセレクションをクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PasteSelection</div> <div class="AccelPath"><Actions>/OchushaActions/PasteSelection</div> <div class="ActionMnemonic">張り付け(<span class="accel">P</span>)</div> <div class="ActionKeyBinding">Ctrl+V</div> <div class="ActionDescription">現在キーボードフォーカスを持つ部位にクリップボードの内容を張り付けます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">DeleteSelection</div> <div class="AccelPath"><Actions>/OchushaActions/DeleteSelection</div> <div class="ActionMnemonic">削除(<span class="accel">D</span>)</div> <div class="ActionKeyBinding">Del</div> <div class="ActionDescription">現在のセレクションを削除します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ExternalTextTools</div> <div class="AccelPath"><Actions>/SchemeManagerActions/ExternalTextTools</div> <div class="ActionMnemonic">テキスト用外部ツール</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたテキストに作用する外部ツールを選択します。</div> <div class="ActionSupplement"> <p>おちゅ〜しゃのデフォルトではGoogleや辞書、Wikipediaなどを使ってウェブ検索するツールが登録されています。</p> </div> </div> </div> <h4>リンク専用の<code>GtkAction</code></h4> <p>以下にあげるものは、スレなどに表示されるリンクや、板一覧の板、ブックマークのフォルダ以外の要素、スレ一覧のスレなど、おちゅ〜しゃ的にリンク扱いできるものをクリックしたり選択した結果セレクションにURLが存在する場合にのみ有効となる<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">OpenLinkLocation</div> <div class="AccelPath"><Actions>/LinkUIActions/OpenLinkLocation</div> <div class="ActionMnemonic">開く(<span class="accel">O</span>)</div> <div class="ActionKeyBinding">Ctrl+O</div> <div class="ActionDescription">選択されたリンクを開きます。</div> <div class="ActionSupplement"> <p>板やスレ、ブックマークなど、サイドバーやスレ一覧で選択されたモノの内、選択された内容がURLで表現できる場合には、この<code>GtkAction</code>の対象となります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">OpenLinkLocationInTab</div> <div class="AccelPath"><Actions>/LinkUIActions/OpenLinkLocationInTab</div> <div class="ActionMnemonic">タブで開く(<span class="accel">T</span>)</div> <div class="ActionKeyBinding">Ctrl+T</div> <div class="ActionDescription">選択されたリンクをタブで開きます。</div> <div class="ActionSupplement"> <p>板やスレ、ブックマークなど、サイドバーやスレ一覧で選択されたモノの内、選択された内容がURLで表現できる場合には、この<code>GtkAction</code>の対象となります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">OpenLinkLocationWithWebBrowser</div> <div class="AccelPath"><Actions>/LinkUIActions/OpenLinkLocationWithWebBrowser</div> <div class="ActionMnemonic">ウェブブラウザで開く(<span class="accel">W</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたリンクをウェブブラウザで開きます。</div> <div class="ActionSupplement"> <p>板やスレ、ブックマークなど、サイドバーやスレ一覧で選択されたモノの内、選択された内容がURLで表現できる場合には、この<code>GtkAction</code>の対象となります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">BookmarkLinkLocation</div> <div class="AccelPath"><Actions>/LinkUIActions/BookmarkLinkLocation</div> <div class="ActionMnemonic">ブックマーク(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたリンクをブックマークします。</div> <div class="ActionSupplement"> <p>板やスレ、ブックマークなど、サイドバーやスレ一覧で選択されたモノの内、選択された内容がURLで表現できる場合には、この<code>GtkAction</code>の対象となります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">CopyLinkLocation</div> <div class="AccelPath"><Actions>/LinkUIActions/CopyLinkLocation</div> <div class="ActionMnemonic">URLをコピー(<span class="accel">C</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたリンクのURLをクリップボードにコピーします。</div> <div class="ActionSupplement"> <p>板やスレ、ブックマークなど、サイドバーやスレ一覧で選択されたモノの内、選択された内容がURLで表現できる場合には、この<code>GtkAction</code>の対象となります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ExternalLinkTools</div> <div class="AccelPath"><Actions>/SchemeManagerActions/ExternalLinkTools</div> <div class="ActionMnemonic">リンク用外部ツール</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">リンクに作用する外部ツールを選択します。</div> <div class="ActionSupplement"> <p>おちゅ〜しゃのデフォルトではwgetやd4xといったダウンローダや<a href="http://web.archive.org/">Internet Archive Wayback Machine</a>で開くといったツールが登録されています。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">CopyFileLocation</div> <div class="AccelPath"><Actions>/ImageLinkActions/CopyFileLocation</div> <div class="ActionMnemonic">ファイルの位置をコピー(<span class="accel">F</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">画像キャッシュファイルのフルパスをクリップボードにコピーします。</div> <div class="ActionSupplement"> <p>この<code>GtkAction</code>は、リンクが画像っぽいと判断され、更に、その画像がキャッシュされている場合にのみ有効になります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">TenureLinkImage</div> <div class="AccelPath"><Actions>/ImageLinkActions/TenureLinkImage</div> <div class="ActionMnemonic">リンク画像を保存</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">キャッシュされた画像ファイルを(容量などの設定により表示されないでいると勝手に消去される)一時キャッシュではなく、削除するまで消えない永続キャッシュへと移動します。</div> <div class="ActionSupplement"> <p>この<code>GtkAction</code>は、リンクが画像っぽいと判断され、更に、その画像が一時キャッシュに格納されている場合にのみ有効になります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ABoneLinkImage</div> <div class="AccelPath"><Actions>/ImageLinkActions/ABoneLinkImage</div> <div class="ActionMnemonic">リンク画像をあぼーん</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">画像をあぼーんします。キャッシュされていた画像も削除され、これ以降同じURLの画像は完全に無視されるようになります。</div> <div class="ActionSupplement"> <p>この<code>GtkAction</code>は、リンクが画像っぽいと判断され、更に、その画像がキャッシュされている場合にのみ有効になります。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ABoneLinkServer</div> <div class="AccelPath"><Actions>/ImageLinkActions/ABoneLinkServer</div> <div class="ActionMnemonic">リンク先鯖をあぼーん</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">画像をダウンロードしたサーバをあぼーんします。同じサーバからダウンロードされキャッシュされている全ての画像も削除され、これ以降同じサーバの画像は完全に無視されるようになります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ExternalImageTools</div> <div class="AccelPath"><Actions>/SchemeManagerActions/ExternalImageTools</div> <div class="ActionMnemonic">画像用外部ツール</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">キャッシュされた画像ファイルに作用する外部ツールを選択します。</div> <div class="ActionSupplement"> <p>この<code>GtkAction</code>は、リンクが画像っぽいと判断され、更に、その画像がキャッシュされている場合にのみ有効になります。</p> <p>おちゅ〜しゃのデフォルトでは名前を付けて画像を<code>cp</code>コマンドにより保存する機能や、eogやgimpなどの画像用のツールが登録されています。</p> </div> </div> </div> <h4>板一覧やブックマーク専用の<code>GtkAction</code></h4> <p>以下にあげるものは板一覧やブックマークで要素が選択されている時にのみ有効となる<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">NewFolder</div> <div class="AccelPath"><Actions>/TreeUIActions/NewFolder</div> <div class="ActionMnemonic">新しいフォルダ(<span class="accel">F</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択した位置に新しいフォルダを作ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">HideTreeItem</div> <div class="AccelPath"><Actions>/TreeUIActions/HideTreeItem</div> <div class="ActionMnemonic">隠す(<span class="accel">H</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択された掲示板、ブックマーク要素やフォルダを隠します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ToggleTreeItemHiddenState</div> <div class="AccelPath"><Actions>/TreeUIActions/ToggleTreeItemHiddenState</div> <div class="ActionMnemonic">隠す状態を反転(<span class="accel">H</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択された掲示板、ブックマーク要素やフォルダの<em>隠す</em>状態を反転します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopyTreeItemName</div> <div class="AccelPath"><Actions>/TreeUIActions/CopyTreeItemName</div> <div class="ActionMnemonic">名前をコピー(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択された掲示板、ブックマーク要素やフォルダの名前をクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopyTreeItemNameURL</div> <div class="AccelPath"><Actions>/TreeUIActions/CopyTreeItemNameURL</div> <div class="ActionMnemonic">名前とURLをコピー(<span class="accel">A</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択された掲示板、ブックマーク要素の名前とURLをクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">TreeItemProperties</div> <div class="AccelPath"><Actions>/TreeUIActions/TreeItemProperties</div> <div class="ActionMnemonic">プロパティ(<span class="accel">P</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択された掲示板、ブックマーク要素やフォルダのプロパティを開きます。</div> <div class="ActionSupplement"></div> </div> </div> <h4>ブックマークフォルダ専用の<code>GtkAction</code></h4> <p>以下にあげるものはブックマークフォルダが選択されている場合にのみ有効となる<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">OpenFolderAsThreadlist</div> <div class="AccelPath"><Actions>/BookmarksActions/OpenFolderAsThreadlist</div> <div class="ActionMnemonic">フォルダをスレ一覧として開く(<span class="accel">L</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたフォルダをスレ一覧として開きます。</div> <div class="ActionSupplement"> <p>ブックマークフォルダ専用です。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">OpenFolderAsThreadlistInTab</div> <div class="AccelPath"><Actions>/BookmarksActions/OpenFolderAsThreadlistInTab</div> <div class="ActionMnemonic">フォルダをスレ一覧としてタブで開く(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたフォルダをスレ一覧としてタブで開きます。</div> <div class="ActionSupplement"> <p>ブックマークフォルダ専用です。</p> </div> </div> </div> <h4>スレ一覧専用の<code>GtkAction</code></h4> <p>以下にあげるものはスレ一覧でスレが選択されている場合にのみ有効となる<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">OpenTrackbackWithWebBrowser</div> <div class="AccelPath"><Actions>/ThreadlistActions/OpenTrackbackWithWebBrowser</div> <div class="ActionMnemonic">トラックバックをウェブブラウザで開く(<span class="accel">B</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレのトラックバックをウェブブラウザで開きます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">MarkThread</div> <div class="AccelPath"><Actions>/ThreadlistActions/MarkThread</div> <div class="ActionMnemonic">印を付ける(<span class="accel">M</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレに印を付けます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">UnmarkThread</div> <div class="AccelPath"><Actions>/ThreadlistActions/UnmarkThread</div> <div class="ActionMnemonic">印を外す(<span class="accel">U</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレの印を外します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">HideThread</div> <div class="AccelPath"><Actions>/ThreadlistActions/HideThread</div> <div class="ActionMnemonic">隠す(<span class="accel">H</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレを隠します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ToggleThreadHiddenState</div> <div class="AccelPath"><Actions>/ThreadlistActions/ToggleThreadHiddenState</div> <div class="ActionMnemonic">隠す状態を反転(<span class="accel">H</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレの<em>隠す</em>状態を反転します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ResetThread</div> <div class="AccelPath"><Actions>/ThreadlistActions/ResetThread</div> <div class="ActionMnemonic">リセット(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレを読まなかったことにします。この時当該スレのDATファイルも削除されます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopyThreadURL</div> <div class="AccelPath"><Actions>/ThreadlistActions/CopyThreadURL</div> <div class="ActionMnemonic">URLをコピー(<span class="accel">C</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレのURLをクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopyThreadTitle</div> <div class="AccelPath"><Actions>/ThreadlistActions/CopyThreadTitle</div> <div class="ActionMnemonic">スレタイをコピー(<span class="accel">N</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレのタイトルをクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CopyThreadTitleURL</div> <div class="AccelPath"><Actions>/ThreadlistActions/CopyThreadTitleURL</div> <div class="ActionMnemonic">スレタイとURLをコピー(<span class="accel">A</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレのタイトルとURLをクリップボードにコピーします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ThreadProperties</div> <div class="AccelPath"><Actions>/ThreadlistActions/ThreadProperties</div> <div class="ActionMnemonic">プロパティ(<span class="accel">P</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">選択されたスレのプロパティを開きます。</div> <div class="ActionSupplement"></div> </div> </div> <h4>スレ内の特殊リンクを対象とする<code>GtkAction</code></h4> <p>おちゅ〜しゃのスレ表示には見た目はリンクっぽいが、役割が特殊なものが現れます。以下にあげるものは、そういった特殊なリンクをクリックした時にのみ有効となる<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">WriteResponseToThisResponse</div> <div class="AccelPath"><Actions>/ResLinkActions/WriteResponseToThisResponse</div> <div class="ActionMnemonic">このレスにレス(<span class="accel">W</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">書き込みエディタを開き、「>>レス番号」を挿入します。</div> <div class="ActionSupplement"> <p>最近使用したエディタがウィンドウであれば書き込みウィンドウが、埋め込みレスエディタであれば埋め込みレスエディタが開かれます。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">InsertBookmark</div> <div class="AccelPath"><Actions>/ResLinkActions/InsertBookmark</div> <div class="ActionMnemonic">俺様用のしおりを挿入</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">クリックしたレスの直後に「俺様用のしおり」を挿入します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ABoneResponse</div> <div class="AccelPath"><Actions>/ResLinkActions/ABoneResponse</div> <div class="ActionMnemonic">あぼーん</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">クリックしたレスをあぼーんします。</div> <div class="ActionSupplement"> <p>実装の都合により、あぼーんは次回以降スレを開く時まで反映されません。また「ローカルあぼーんを無効にする」を設定している場合にはこの選択によるあぼーんが無効化されます。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">UnABoneResponse</div> <div class="AccelPath"><Actions>/ResLinkActions/UnABoneResponse</div> <div class="ActionMnemonic">あぼーん解除</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">クリックしたレスのあぼーんを解除します。</div> <div class="ActionSupplement"> <p>実装の都合により、あぼーんの解除は次回以降スレを開く時まで反映されません。</p> </div> </div> <div class="ActionItem"> <div class="ActionID">ABoneIDInThisThread</div> <div class="AccelPath"><Actions>/IDLinkActions/ABoneIDInThisThread</div> <div class="ActionMnemonic">IDをこのスレであぼーん</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">クリックしたIDを現在表示されているスレのあぼーんIDとして登録します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">ABoneIDInThisBoard</div> <div class="AccelPath"><Actions>/IDLinkActions/ABoneIDInThisBoard</div> <div class="ActionMnemonic">IDをこの板であぼーん</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">クリックしたIDを現在表示されているスレ所属する板のあぼーんIDとして登録します。</div> <div class="ActionSupplement"></div> </div> </div> <h3><a name="CurrentViewActions">現在のViewへのGtkAction</a></h3> <p>ここで言う現在のViewとは、「サイドバー」、「スレ一覧タブ」、「スレタブ」のいずれかの内、現在キーボードフォーカスを持っているか最後に持っていたものを示します。</p> <p>時々おちゅ〜しゃがキーボードフォーカスの在処に追従できない場合があり、それはバグですが、サイドバーにキーボードフォーカスがある場合を除外すると、タイトルバーにスレタイが表示されている時は「スレタブ」、スレタイが表示されておらず板名が表示されている時は「スレ一覧タブ」が現在のViewになります。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">BookmarkThisPage</div> <div class="AccelPath"><Actions>/CurrentViewActions/BookmarkThisPage</div> <div class="ActionMnemonic">このページをブックマーク(<span class="accel">B</span>)</div> <div class="ActionKeyBinding">Ctrl+D</div> <div class="ActionDescription">現在のViewをブックマークします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CloseThisPage</div> <div class="AccelPath"><Actions>/CurrentViewActions/CloseThisPage</div> <div class="ActionMnemonic">このページを閉じる(<span class="accel">C</span>)</div> <div class="ActionKeyBinding">Ctrl+W</div> <div class="ActionDescription">現在のViewを閉じます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">FindInThisPage</div> <div class="AccelPath"><Actions>/CurrentViewActions/FindInThisPage</div> <div class="ActionMnemonic">このページの検索(<span class="accel">F</span>)</div> <div class="ActionKeyBinding">Ctrl+F</div> <div class="ActionDescription">現在のViewで文字列検索を開始します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GoBack</div> <div class="AccelPath"><Actions>/CurrentViewActions/GoBack</div> <div class="ActionMnemonic">戻る(<span class="accel">B</span>)</div> <div class="ActionKeyBinding">Alt+←</div> <div class="ActionDescription">現在のViewで直前に表示していた位置もしくはページに戻ります。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">GoForward</div> <div class="AccelPath"><Actions>/CurrentViewActions/GoForward</div> <div class="ActionMnemonic">進む(<span class="accel">F</span>)</div> <div class="ActionKeyBinding">Alt+→</div> <div class="ActionDescription">現在のViewで直後に表示した位置もしくはページに進みます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">PageInfo</div> <div class="AccelPath"><Actions>/CurrentViewActions/PageInfo</div> <div class="ActionMnemonic">ページ情報(<span class="accel">I</span>)</div> <div class="ActionKeyBinding">Ctrl+I</div> <div class="ActionDescription">現在のViewに対するプロパティを表示します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RefreshThisPage</div> <div class="AccelPath"><Actions>/CurrentViewActions/RefreshThisPage</div> <div class="ActionMnemonic">このページを更新(<span class="accel">R</span>)</div> <div class="ActionKeyBinding">Ctrl+R</div> <div class="ActionDescription">現在のViewを更新します。</div> <div class="ActionSupplement"></div> </div> </div> <h3><a name="SpecificActions">特定のコンテキストを対象とするGtkAction</a></h3> <p>以下は、スレ一覧もしくはスレのタブブックマーク部分のコンテキストメニュー専用の<code>GtkAction</code>です。</p> <div class="ActionItemList"> <div class="ActionItem"> <div class="ActionID">BookmarkTab</div> <div class="AccelPath"><Actions>/ViewManagerActions/BookmarkTab</div> <div class="ActionMnemonic">このタブをブックマーク(<span class="accel">T</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">タブで表示されているスレ一覧に対応する板もしくはスレをブックマークします。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">RefreshTab</div> <div class="AccelPath"><Actions>/ViewManagerActions/RefreshTab</div> <div class="ActionMnemonic">このタブを更新(<span class="accel">R</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">タブで表示されているスレ一覧に対応する板もしくはスレを更新します。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">CloseTab</div> <div class="AccelPath"><Actions>/ViewManagerActions/CloseTab</div> <div class="ActionMnemonic">このタブを閉じる(<span class="accel">C</span>)</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">タブで表示されているスレ一覧に対応する板もしくはスレを閉じます。</div> <div class="ActionSupplement"></div> </div> <div class="ActionItem"> <div class="ActionID">AutoRefreshThreadTab</div> <div class="AccelPath"><Actions>/ViewManagerActions/AutoRefreshThreadTab</div> <div class="ActionMnemonic">このタブの自動更新</div> <div class="ActionKeyBinding"></div> <div class="ActionDescription">タブで表示されているスレの自動更新を開始します。</div> <div class="ActionSupplement"> <p>スレタブ専用です。</p> </div> </div> </div> <hr> <h2><a name="tscore">おちゅ〜しゃのSchemeインタプリタについて</a></h2> <p>おちゅ〜しゃは自前のSchemeシステムを用いています(ソースツリーの<code>libtscore</code>以下にまとまっています)。バージョン0.5.x以前には<a href="http://tinyscheme.sourceforge.net/">TinyScheme</a>をベースとして改造したSchemeインタプリタを用いていましたが、おちゅ〜しゃをC++で新規設計・実装するにあたり、主に速度とメンテナンス性を求めて自前実装に切り替えました。</p> <p>サードパーティ製のものを用いることに抵抗感があるわけではないのですが、TinyScheme並にコンパクトでおちゅ〜しゃに組み込みやすく、かつ、性能が良いものを見つけるのは困難でした(Boehm GCなどを使っているものは、何時何が起こるのか予測しづらいので選択肢から除外しています)。</p> <p>――Schemeの実装そのものとして配布されているものは、やはり単体でのプログラミング言語システムとしての完成度、添付ライブラリの充実などを主要な目標として発展しているので、良いもの程大きくなるのは当然です。また、どちらかというとプログラムの全部もしくは大部分をSchemeで書きたいというユーザ向けに設計されているので、余所の言語で書かれたプログラムに組み込んでちょろっとScheme手続きを呼び出す……などという使い方にはシステムが大げさすぎます。</p> <p>ネタ的に一度は一から書いてみたかったという理由もあります。</p> <h3><a name="tscore-use-case">おちゅ〜しゃでのSchemeの使い方</a></h3> <p>おちゅ〜しゃでは、設定ダイアログっぽいもので選択可能にするなどという方針では選択そのものが煩雑になってしまうか、選択肢そのものが極端に多様化しうるような、そもそもアプリ本体にハードコーディングしてしまうのがイクナイ感じが否めない様々なモノを提供しつつ、かつ、(ユーザなど)サードパーティによるカスタマイズの余地を残したい――という場面でSchemeによる実装を用いています。</p> <p>具体的には、現時点で以下の目的でSchemeによる実装を用いています。</p> <ul> <li>スレ一覧の着色方針の決定</li> <li>スレ一覧において、あるスレがユーザの興味を惹いているスレかどうかの判断</li> <li>スレ一覧のソーティング・フィルタリング</li> <li>スレ内リンクなどのコンテキストメニューのカスタマイズ</li> <li>2ちゃんねるのDATファイルを表示する際に、URLっぽい文字列をリンクっぽく表現するための文書加工</li> <li>URLが画像へのリンクっぽいかどうかの判定</li> <li>画像へのアクセス時にあると良いかもしれないURLの加工</li> <li>画像の代わりに送られてきたHTML文書から画像URLを抜き出し、リダイレクトさせる</li> </ul> <h3><a name="tscore-ochusha">おちゅ〜しゃ特有の手続き</a></h3> <p>Scheme手続きによるおちゅ〜しゃのカスタマイズに利用可能なおちゅ〜しゃ特有のScheme手続きには、以下のようなものがあります。</p> <p>ここに記載されていないものについては、今後仕様変更が予想されているか、現時点では全く使い道がないかのいずれかです。</p> <p>現時点の実装では、実行時に板オブジェクトとスレオブジェクトの区別を厳密には確認してはいないため、これらを混同して適切でない手続きを呼び出すとおちゅ〜しゃがSegmentation Faultで落ちる可能性が高いことに注意。</p> <h4><code>(url-encode-string <span class="argument">STRING</span>)</code></h4> <p><span class="argument">STRING</span>をURLエンコードした文字列を返す。</p> <h4><code>(url-decode-string <span class="argument">STRING</span>)</code></h4> <p>URLエンコードされた文字列<span class="argument">STRING</span>をデコードして得られた文字列を返す。</p> <h4><a name="bbs-type"><code>(board-get-bbs-type <span class="argument">BOARD</span>)</code></a></h4> <p>板オブジェクト<span class="argument">BOARD</span>の表す掲示板種別を示す整数値を返す。掲示板種別を表す数値は以下の変数に対応する。</p> <dl class="arguments"> <dt><code>OCHUSHA-BBS-TYPE-2CH</code></dt> <dd>2ちゃんねる掲示板。</dd> <dt><code>OCHUSHA-BBS-TYPE-MACHIBBS</code></dt> <dd>まちBBS。</dd> <dt><code>OCHUSHA-BBS-TYPE-JBBS-LIVEDOOR</code></dt> <dd>ライブドアJBBS(旧したらばJBBS)。</dd> <dt><code>OCHUSHA-BBS-TYPE-2CH-HEADLINE</code></dt> <dd>2ちゃんねるヘッドライン。</dd> <dt><code>OCHUSHA-BBS-TYPE-2CH-BE</code></dt> <dd>(新設当時)文字エンコーディングがEUC-JPだった頃の2ちゃんねるBe掲示板。</dd> <dt><code>OCHUSHA-BBS-TYPE-BBSPINK</code></dt> <dd>BBSPink。</dd> <dt><code>OCHUSHA-BBS-TYPE-BBSPINK-HEADLINE</code></dt> <dd>BBSPinkヘッドライン。</dd> <dt><code>OCHUSHA-BBS-TYPE-2CH-COMPATIBLE</code></dt> <dd>2ちゃんねる互換の掲示板。</dd> <dt><code>OCHUSHA-BBS-TYPE-2CH-COMPATIBLE-RO</code></dt> <dd>2ちゃんねる互換の掲示板(読み込み専用)。</dd> <dt><code>OCHUSHA-BBS-TYPE-2CHLIKE-EUCJP</code></dt> <dd>文字エンコーディングがEUC-JPな2ちゃんねる風掲示板。</dd> <dt><code>OCHUSHA-BBS-TYPE-UNKNOWN</code></dt> <dt><code>OCHUSHA-BBS-TYPE-JBBS</code></dt> <dt><code>OCHUSHA-BBS-TYPE-MITINOKU</code></dt> <dt><code>OCHUSHA-BBS-TYPE-2CH-RESERVED</code></dt> <dd>通常は現れない。</dd> </dl> <h4><code>(board-get-url <span class="argument">BOARD</span>)</code></h4> <p>板オブジェクト<span class="argument">BOARD</span>の表す掲示板のURL文字列を返す。</p> <h4><code>(board-get-name <span class="argument">BOARD</span>)</code></h4> <p>板オブジェクト<span class="argument">BOARD</span>の表す掲示板名文字列を返す。</p> <h4><code>(thread-get-bbs-type <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの掲示板種別を返す。値は<a href="#bbs-type"><code>(board-get-bbs-type <span class="argument">BOARD</span>)</code></a>の返す値に準ずる。</p> <p>通常は<code>(board-get-bbs-type (thread-get-board <span class="argument">THREAD</span>))</code>と同じ値が返るが、2ちゃんねるの「面白ねたニュース」板のように、鯖移転に伴い掲示板種別が変更になった場合には異なる値が得られる。</p> <h4><code>(thread-get-board <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの属する掲示板を表す板オブジェクトを返す。</p> <h4><code>(thread-get-id <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレのID文字列を返す。</p> <h4><code>(thread-get-title <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレのスレタイ文字列を返す。</p> <h4><code>(thread-get-url <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレのURL文字列を返す。</p> <h4><code>(thread-get-rank <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの属する板のスレ一覧内における最新の順位を返す。DAT落ちしたスレの場合には0が返る。</p> <h4><code>(thread-get-previous-rank <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの属する板のスレ一覧内における前回の順位を返す。</p> <h4><code>(thread-get-number-of-responses-on-server <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの鯖が保持していると期待されるレス数を返す。</p> <h4><code>(thread-get-number-of-responses-read <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの既読レス数を返す。</p> <h4><code>(thread-get-number-of-new-responses <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの前回のスレ一覧更新以降のレス数の増分を返す。</p> <h4><code>(thread-get-number-of-responses-available <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレのその時点で存在すると期待されるレス数を返す。</p> <h4><code>(thread-get-number-of-responses-to-read <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレの未読レス数を返す。</p> <h4><code>(thread-get-birthtime <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレのスレ立て日時を表すUTC時刻相当の整数値を返す。スレのID文字列を整数に変換したものと同値。</p> <h4><code>(thread-new? <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレがスレ一覧に表示されたことのないスレかどうかを返す。</p> <h4><code>(thread-alive? <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレが鯖に現存することが期待できるかどうかを返す。</p> <h4><code>(thread-stopped? <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレがスレストされていることが判明しているかどうかを返す。</p> <h4><code>(thread-marked? <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレに印がつけられているかどうかを返す。</p> <h4><code>(thread-hidden? <span class="argument">THREAD</span>)</code></h4> <p>スレオブジェクト<span class="argument">THREAD</span>の表すスレが隠されているかどうかを返す。</p> <h4><code>(register-threadlist-rule <span class="argument">NAME</span> <span class="argument">LABEL</span> <span class="argument">DESCRIPTION</span> <span class="argument">PROCEDURE</span>)</code></h4> <p>スレ一覧の表示規則を登録する。各引数の意味は以下の通り。</p> <dl class="arguments"> <dt><span class="argument">NAME</span></dt> <dd>内部的に規則を識別するために用いられる文字列。同じ名前の規則が存在している場合、上書きされる。</dd> <dt><span class="argument">LABEL</span></dt> <dd>GUIのメニューなどに表示される文字列。</dd> <dt><span class="argument">DESCRIPTION</span></dt> <dd>規則の説明。GTK+-2.12以降の場合、規則選択のコンボボックスのツールチップとして表示される。</dd> <dt><span class="argument">PROCEDURE</span></dt> <dd>スレ一覧の表示時に、各スレについて一度ずつ実行される手続き。スレ一覧のスレはこの手続きの返す値の昇順でソートされ、<code>#f</code>が返されたスレはスレ一覧に表示されない。引数としてスレオブジェクトを一つだけ取る手続きでなければならない。</dd> </dl> <p>現時点で<span class="argument">PROCEDURE</span>の返す値はC/C++の<code>long</code>として取り扱われます。また、ソート済リストへの要素の追加に関して速度的に致命的な不具合を持っていたGTK+-2.4.x以前の<code>GtkTreeSortable</code>な<code>GtkListStore</code>対策のための実装上の都合を由来として、現時点では正の整数であることが期待されます――既におちゅ〜しゃはバージョン2.4.x以前のGTK+はサポートしないと決めているのでいつでも完全な整数を許す実装に変更することはできますが、<code>int64_t</code>もしくは<code>double</code>を用いるように変更するという選択肢もあるので、検討中です。</p> <h4><code>(register-external-tool <span class="argument">NAME</span> <span class="argument">LABEL</span> <span class="argument">DESCRIPTION</span> <span class="argument">TOOL-TYPE</span> <span class="argument">TEMPLATEorPROCEDURE</span>)</code></h4> <p>リンクなどのコンテキストメニューに現れる外部ツールを登録する。各引数の意味は以下の通り。</p> <dl class="arguments"> <dt><span class="argument">NAME</span></dt> <dd>内部的に規則を識別するために用いられる文字列。同じ名前のツールが登録されている場合、上書きされる。</dd> <dt><span class="argument">LABEL</span></dt> <dd>GUIのメニューなどに表示される文字列。</dd> <dt><span class="argument">DESCRIPTION</span></dt> <dd>ツールの説明。ファイル選択ダイアログのタイトルに用いられる。</dd> <dt><span class="argument">TOOL-TYPE</span></dt> <dd>ツールの種別を示し、どのメニューに現れるべきかを決めるシンボル。現在内部的には、'link-tool、'image-tool、'text-toolの3種類が予約されている。</dd> <dt><span class="argument">TEMPLATEorPROCEDURE</span></dt> <dd>メニュー選択の結果何をすべきかを定義するコマンドラインテンプレート文字列、もしくは、コンテキストを元にテンプレートを計算する手続き。おちゅ〜しゃはテンプレート文字列内の"%ARG%"というキーワードをコンテキストとして与えられたURLや画像ファイルのパス名、選択中の文字列などで置換し、その結果として得られた文字列をコマンドラインとして外部プログラムを実行する。テンプレート文字列内に"%FILENAME_FROM_ARG%"や"%FILENAME%"が現れた場合には、ファイル選択ダイアログを表示し、ダイアログでユーザが選択したファイル名で置換する。</dd> </dl> <h3><a name="customize-by-scheme">Schemeによるカスタマイズ詳細</a></h3> <p>おちゅ〜しゃは特定の場面で予約してあるScheme手続きを呼び出し、その手続きに計算を任せることで、ユーザのカスタマイズ対象となりうるad-hocな計算をおちゅ〜しゃ本体にハードコーディングすることを避けています。</p> <p>ここでは、それらの手続きのおちゅ〜しゃからの要求仕様を簡単に書いておきます。</p> <p>同内容は<code>/usr/share/ochusha/ochusha-init.scm.default</code>あるいは<code>/usr/share/doc/ochusha-0.6.0.1/ochusha-init.scm.default</code>辺りにインストールされているだろうサンプルプログラム内にコメントとして記載されています。</p> <h4><code>(decorate-list-entry <span class="argument">THREAD</span>)</code></h4> <p>引数としてスレオブジェクト<span class="argument">THREAD</span>を取り、スレ一覧におけるそのスレの配色を決定するペア<code>(前景色 . 背景色)</code>を返す。</p> <p>前景色や背景色の値には、おちゅ〜しゃの設定ダイアログでユーザが変更可能な前景色・背景色それぞれ4通りの色を参照する定数扱いの変数や、<code>(gdk-color-parse <span class="argument">色指定文字列</span>)</code>で得られる値を用いる。</p> <h4><code>(interest-thread? <span class="argument">THREAD</span>)</code></h4> <p>引数としてスレオブジェクト<span class="argument">THREAD</span>を取り、ユーザが興味を持っているスレかどうかを判定する。</p> <p>スレ一覧のpやnによるカーソル移動やスペースキーでのスレ読み込みの対象となるべきスレかどうかを判定するために用いられる。</p> <h4><code>(rewrite-message <span class="argument">MESSAGE</span>)</code></h4> <p><span class="argument">MESSAGE</span>として与えられた文字列をレスの内容として、表示用に加工する。</p> <h4><code>(image-link? <span class="argument">URL</span>)</code></h4> <p>文字列<span class="argument">URL</span>が画像へのリンクっぽいかどうかを判定する。</p> <h4><code>(rewrite-image-link <span class="argument">URL</span>)</code></h4> <p>画像へのリンクっぽいと判定された文字列<span class="argument">URL</span>について、実際にアクセスするURLを決定する。</p> <p>手続きの値としてはURLそのものを表す文字列もしくは<code>(<span class="argument">URL文字列</span> . <span class="argument">Referer文字列</span>)</code>というペアが期待される。それ以外の値が返された場合、おちゅ〜しゃは<span class="argument">URL</span>そのものを画像へのURLとして取り扱う。</p> <h4><code>(redirect-image-link <span class="argument">URL</span> <span class="argument">PAGE-SOURCE</span>)</code></h4> <p>文字列<span class="argument">URL</span>が画像へのリンクっぽいとしてアクセスした結果、文字列<span class="argument">PAGE-SOURCE</span>というHTMLソースがHTTPのステータスコード200で返された場合に呼び出される。この手続きがURL文字列を返した場合、おちゅ〜しゃは返されたURL文字列を画像へのURLとして画像のダウンロードを再度試みる。この時、引数<span class="argument">URL</span>がHTTPリクエストヘッダのRefererとして用いられる。</p> <h3><a name="tscore-spec">おちゅ〜しゃのSchemeシステムの仕様</a></h3> <p><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/">Revised<sup>5</sup> Report on the Algorithmic Language Scheme(R<sup>5</sup>RS)</a>準拠を目指して実装されていますが、まだかなーり中途半端なので難しいことはできません。</p> <p><a href="http://www.r6rs.org">Revised<sup>6</sup> Report on the Algorithmic Language Scheme(R<sup>6</sup>RS)</a>は、おちゅ〜しゃへの組み込み専用の仕様としては規模が大きすぎるし、文字をUnicode表現にしなければならないのが面倒すぎるのでR<sup>6</sup>RS準拠を目指すことは当面考えません。仕様という観点での目標はR<sup>5</sup>RS仕様への準拠になります。</p> <p>R<sup>5</sup>RS仕様だけでは不便なので、作者が必要と思った時に必要と思った機能が順次追加されていますが、その場合の追加仕様は<a href="http://srfi.schemers.org">Scheme Requests for Implementation(SRFI)</a>に適当なものがあればその仕様を、無ければ良く知られたライブラリや<a href="http://practical-scheme.net/gauche/index-j.html">Gauche</a>のように手軽に使えて、実績のあるSchemeシステムが提供しているものの仕様を頂いてくるという方針で決定しています。いずれはR<sup>6</sup>RSから一部の仕様を頂いてくるということもあるかもしれません。</p> <h4>現時点で実装されているScheme仕様</h4> <dl> <dt>R<sup>5</sup>RSの大部分(?)</dt> <dd>大部分が実装されていますが、例えば<a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2">Numbers</a>がまともには実装されていない(全ての数値表現が<em>fixnum</em>あるいは<em>flonum</em>でしかない)ように、Schemeシステム単体としてはかなり中途半端です。実装上の制限に関する詳細については<a href="#tscore-limitations">後述します</a>。</dd> <dt>Basic String Ports (<a href="http://srfi.schemers.org/srfi-6/srfi-6.html">SRFI-6</a>)</dt> <dd>全部実装されているはずです。</dd> <dt>Time Data Types and Procedures (<a href="http://srfi.schemers.org/srfi-19/srfi-19.html">SRFI-19</a>)</dt> <dd><code>date-week-number</code>、<code>date->string</code>、<code>string->date</code>以外は実装されています。なぜこれらが実装されていないのかは忘れてしまいましたが、多分面倒だったからです。恐らく、使いそうだ……と思って実装を始めた挙げ句、やっぱイラネ……と思って放置されている悪寒。</dd> <dt>Basic Format Strings (<a href="http://srfi.schemers.org/srfi-28/srfi-28.html">SRFI-28</a>)</dt> <dd>単純すぎるので、Intermediate Format Strings (<a href="http://srfi.schemers.org/srfi-48/srfi-48.html">SRFI-48</a>)辺りを用意すべきかもしれません。</dd> <dt>正規表現</dt> <dd>正規表現は<a href="http://www.ccs.neu.edu/home/dorai/pregexp/pregexp.html">pregexp</a>風のprocedureが実装され、プログラム内にはGauche風のリテラル表記(<code>#/正規表現/</code>もしくは<code>#/正規表現/i</code>(case insensitive)という表記)ができます。pregexpそのものではなく、実装に<a href="http://www.geocities.jp/kosako3/oniguruma/">鬼車</a>を用いているため、pregexp本来の正規表現とは異なる部分があるかもしれません。また、鬼車も全機能を使っているわけではありません。</dd> </dl> <p>おちゅ〜しゃのSchemeシステムにおける正規表現関連の手続きには以下のものがあります。</p> <h4><code>(string->regexp <span class="argument">REGEXP</span>)</code></h4> <p>文字列<span class="argument">REGEXP</span>に相当する正規表現オブジェクトを返す。<code>#/REGEXP/</code>との違いは、リテラル表記の場合にはSchemeコードのコンパイル時に一度だけ正規表現オブジェクトが作られるのに対し、手続きの場合には実行される度に作られるという点だけ(?)です。</p> <p>もちろん引数の<span class="argument">REGEXP</span>は文字列に評価される任意の式が書けるので、リテラル表現としては書けない正規表現が必要な場合にはこの手続きが必要になります。</p> <p>――リテラルでしかcase insensitiveが指定できないという違いもあるなー。</p> <p>これはGaucheの仕様を真似した手続きです。Gaucheではキーワード引数というものによりcase insensitiveを指定できますが、現在のところはサポートしていません。</p> <h4><code>(regexp-match-positions <span class="argument">REGEXP</span> <span class="argument">STRING</span>)</code></h4> <p>正規表現オブジェクト<span class="argument">REGEXP</span>を文字列<span class="argument">STRING</span>にマッチさせた結果の各捕獲集合について、<span class="argument">STRING</span>に対応する部分文字列の<code>(<span class="argument">開始</span> . <span class="argument">終了</span>)</code>のようなペアのリストを返す。マッチしない場合は<code>#f</code>を返す。</p> <h4><code>(regexp-match <span class="argument">REGEXP</span> <span class="argument">STRING</span>)</code></h4> <p>正規表現オブジェクト<span class="argument">REGEXP</span>を文字列<span class="argument">STRING</span>にマッチさせた結果の各捕獲集合について、<span class="argument">STRING</span>に対応する部分文字列のリストを返す。マッチしない場合は<code>#f</code>を返す。</p> <h4><code>(regexp-split <span class="argument">REGEXP</span> <span class="argument">STRING</span>)</code></h4> <p>正規表現オブジェクト<span class="argument">REGEXP</span>を文字列<span class="argument">STRING</span>にマッチする部分文字列をデリミタとして文字列<span class="argument">STRING</span>を区切り、区切られた各部分文字列のリストを返す。</p> <h4><code>(regexp-replace <span class="argument">REGEXP</span> <span class="argument">STRING</span> <span class="argument">REPLACEMENT</span>)</code></h4> <p>正規表現オブジェクト<span class="argument">REGEXP</span>にマッチする文字列<span class="argument">STRING</span>中の最初の部分文字列を置換文字列<span class="argument">REPLACEMENT</span>で置き換えた文字列を返す。マッチしない場合は元の文字列そのものを返す。</p> <h4><code>(regexp-replace* <span class="argument">REGEXP</span> <span class="argument">STRING</span> <span class="argument">REPLACEMENT</span>)</code></h4> <p>正規表現オブジェクト<span class="argument">REGEXP</span>にマッチする文字列<span class="argument">STRING</span>中の全ての部分文字列を置換文字列<span class="argument">REPLACEMENT</span>で置き換えた文字列を返す。マッチしない場合は元の文字列そのものを返す。</p> <h4><code>(regexp-quote <span class="argument">STRING</span>)</code></h4> <p>文字列<span class="argument">STRING</span>に正確にマッチする正規表現を返す。すなわち、文字列中に正規表現のメタ文字が含まれている場合にそれを<code>'\'</code>でエスケープした文字列を返す。</p> <p>これらはpregexpの仕様を真似した手続きですが、以下の点においてpregexpとは違います。</p> <ul> <li>おちゅ〜しゃのSchemeシステムが対象とする文字列はUTF-8エンコーディングの文字列です。</li> <li>おちゅ〜しゃのSchemeシステムの提供する上記の手続きにおいて、正規表現のパターン指定は<em>正規表現オブジェクト</em>でなければなりません。pregexpの<em>U-regexp</em>はサポートしていません。正規表現オブジェクトについては、Gauche風のリテラル表記をサポートしているので、これは致命的な制限にはならないはずです。</li> <li><code>regexp-split</code>手続きに、空のパターンを指定して文字列を分割した時の振る舞いがpregexpのものとは異なります。pregexpでは文字列<span class="argument">STRING</span>をSchemeの<em>文字</em>単位に分割したリストを返しますが、おちゅ〜しゃの<code>regexp-split</code>の場合には、文字列<span class="argument">STRING</span>をUTF-8エンコーディングの境界で区切ったリストを返します。</li> </ul> <h3><a name="tscore-features">おちゅ〜しゃのSchemeシステムの特徴</a></h3> <p>元々TinySchemeの改造で得た経験を元に設計・実装されていますが、ネタ的な目的もあって一から書いたのでそれなりに特徴があります。</p> <p>覚えている分を列挙すると以下のようなものが挙げられます。</p> <ul> <li>TinySchemeと同じく、実行コンテキストがオブジェクトとしてまとまっているため、独立したSchemeインタプリタを複数同時に用意して用いることができる。</li> <li>Generational GCを採用したメモリシステムを用いています。発生するGCの大半を占めるMinor GCではCopying GCが実行されるので、停止時間が極端に短くなっています。おちゅ〜しゃの使い方では、Mark & Sweep GCだけを採用しているTinySchemeと比べて数十倍から数百倍というオーダで高速になっています。ちなみに、おちゅ〜しゃにおけるSchemeの使い方ではMinor GCしか起こらないと言っても差し支えありません。</li> <li>バイトコードインタプリタなのでコンパイラを頑張って書けばSchemeプログラムの実行が速くなるはずですが、今は微妙です。TinyScheme比で数倍〜数十倍程度には高速化できるはずですが、Gaucheなどに比べると数十倍というオーダで遅いので、コンパイラによる最適化の余地が相当残されていると予想しています。</li> <li>小さな整数や文字はヒープに割り付けるのではなく、値をそのままオブジェクトとして用いています。</li> </ul> <h3><a name="tscore-limitations">おちゅ〜しゃのSchemeシステムの実装上の制限</a></h3> <p>必要になってから実装するという方針で触っているので、現時点では以下のような制限があります。簡単に言えば、面倒だから書いてない部分がそれなりに存在します。</p> <h4>R<sup>5</sup>RS仕様の内、手抜き実装のもの</h4> <dl> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_sec_6.2">Numbers</a></dt> <dd>面倒なので実装していません。おちゅ〜しゃ的には<em>fixnum</em>程度の整数が扱えれば十分だと思っているので、<em>fixnum</em>な整数と<em>flonum</em>な実数だけを実装してお茶を濁してあります。<em>fixnum</em>はC/C++の<code>long</code>の整数で、<em>flonum</em>は<code>double</code>の浮動小数点数です。</dd> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_106">library syntax: <code>(cond <span class="argument"><clause<sub>1</sub>></span> <span class="argument"><clause<sub>2</sub>></span> ...)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_114">library syntax: <code>(case <span class="argument"><key></span> <span class="argument"><clause<sub>1</sub>></span> <span class="argument"><clause<sub>2</sub>></span> ...)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_138">library syntax: <code>(do ((<variable<sub>1</sub>> <init<sub>1</sub>> <step<sub>1</sub>>) ...) (<test> <expression> ...) <command> ...)</a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_124">library syntax: <code>(let <span class="argument"><bindings></span> <span class="argument"><body></span>)</code></a></dt> <dd>以上は面倒なのでR<sup>5</sup>RSに記載されている<code>define-syntax</code>による定義をそのまま使っています。現状ではコンパイラが賢くないので手書きによる処理でコンパイルされる他の類似syntaxに比べると出来上がるバイトコードがかなり低質で実行コストが多少高く付きます。……とはいえ、syntax以外までを考慮に入れると、これらのコンパイル処理を手書きするよりはコンパイラを賢くする方が恐らく最終的なコードの質が良くなるので、当面はこのままの予定です。</dd> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_578">procedure: <code>(eval <span class="argument">expression</span> <span class="argument">environment-specifier</span>)</code></a></dt> <dd>難しい(?)ので<em>properly tail-recursive</em>な実装ではありません。<code>eval</code>を呼び出した側のコンテキストと<code>eval</code>により評価される式のコンテキストとの間で<code>call-with-current-continuation</code>などにより捕獲された<em>continuation</em>を何らかの方法で受け渡し、参照することは<em>禁則事項</em>です――エラーチェックなどしていないので不幸なことが起こるでしょう。</dd> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_630">optional procedure: <code>(load <span class="argument">filename</span>)</code></a></dt> <dd>難しいので<em>properly tail-recursive</em>な実装ではありません。<code>load</code>を呼び出した側のコンテキストと<code>load</code>により読み込まれたSchemeプログラムのコンテキストとの間で<code>call-with-current-continuation</code>などにより捕獲された<em>continuation</em>を何らかの方法で受け渡し、参照することは<em>禁則事項</em>です――エラーチェックなどしていないので不幸なことが起こるでしょう。</dd> </dl> <h4>R<sup>5</sup>RS仕様の内、実装されていないもの</h4> <p>以下に列挙します。ここで挙げられていないのに実装されていない……というものは、現時点で作者が抜けていることすら忘れています。</p> <p>以下には並べていませんが、Numbersの実装をサボっているので有理数や虚数関連の手続きは実装されていません。</p> <dl> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-7.html#%_idx_180">syntax: <code>(let-syntax <span class="argument"><bindings></span> <span class="argument"><body></span>)</code></a></dt> <dd>面倒なので実装していません。これの実装よりも前にコンパイラを書き直すと思います。</dd> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_558">library procedure: <code>(map <span class="argument">proc</span> <span class="argument">list<sub>1</sub></span> <span class="argument">list<sub>2</sub></span> ...)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_560">library procedure: <code>(for-each <span class="argument">proc</span> <span class="argument">list<sub>1</sub></span> <span class="argument">list<sub>2</sub></span> ...)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_572">procedure: <code>(values <span class="argument">obj</span> ...)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_574">procedure: <code>(call-with-values <span class="argument">producer</span> <span class="argument">consumer</span>)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_576">procedure: <code>(dynamic-wind <span class="argument">before</span> <span class="argument">thunk</span> <span class="argument">after</span>)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_588">library procedure: <code>(call-with-input-file <span class="argument">string</span> <span class="argument">proc</span>)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_590">library procedure: <code>(call-with-output-file <span class="argument">string</span> <span class="argument">proc</span>)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_600">optional procedure: <code>(with-input-from-file <span class="argument">string</span> <span class="argument">thunk</span>)</code></a></dt> <dt><a href="http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-9.html#%_idx_602">optional procedure: <code>(with-output-to-file <span class="argument">string</span> <span class="argument">thunk</span>)</code></a></dt> <dd>これらは面倒なので実装していませんが、その内実装します。<code>map</code>や<code>for-each</code>あたりは、おちゅ〜しゃのソースツリーに含まれているTinyScheme由来の<code>init.scm</code>からSchemeによる実装を抜き出してそのまま使ってしまうのでも良いような気がしています。</dd> </dl> <hr> <p class="right">$Date: 2008/12/28 07:23:47 $</p> </div> </body> </html>