<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www11.atwiki.jp/s-irie/">
    <title>irie @ ウィキ</title>
    <link>http://www11.atwiki.jp/s-irie/</link>
    <description>irie @ ウィキ</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-02-14T17:14:33+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/21.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/11.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/13.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/12.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/18.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/10.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/14.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/20.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/1.html" />
                <rdf:li rdf:resource="http://www11.atwiki.jp/s-irie/pages/2.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/21.html">
    <title>ibus.el</title>
    <link>http://www11.atwiki.jp/s-irie/pages/21.html</link>
    <description>
      #center(){&amp;sizex(7){ibus.el}}

*これは何？
Emacsで、日本語や中国語などの文字列をIBusを経由して入力するためのマイナーモード(ibus-mode)です。
IBusのクライアントとして動作します。

GNU Emacs 22, 23, 24用です。XEmacsでは無理だと思います。

質問・ツッコミはこちらのTwitterアカウントへお願いします→[[@iRi_E&gt;http://twitter.com/iRi_E]]
バグ報告はLaunchpadでお願いします（英語）→[[https://bugs.launchpad.net/ibus.el]]

このWikiやはてなダイアリーにコメントを書かれても見落とす可能性が大きいので、申し訳ありませんが上記のどちらかにして下さい。

*特徴
IBusの提供する機能はほとんど使えます。一般的なEmacs用のInput Methodとは異なり、Emacsの起動時にマイナーモードをONにして使うことを想定しています。
-できること
--バッファ毎に入力モードの切り替えができます。
--C-SPCとかC-/をIBusに渡さないように設定できます。
--かな入力方式、親指シフト入力方式に対応した（つもり）。
--IBusのon/off状態によってカーソルの色を変えられます。
--インクリメンタル検索（isearch-mode）で使用できます。
-できないこと
--端末エミュレータ上では使えません。
--モディファイアキー(shiftやcontrol)単独の押下は検出できません。

*最新情報
ibus.el Version 0.3.1 をリリースしました。 (2012.02.14)

Version 0.3.0からの変更点
-surrounding text をサポートしない古いバージョンの IBus (&lt; 1.4.0) でエラーが発生する不具合を修正 (LP #930015)
-新しく生成されたバッファが IBus daemon から IMContext ID を受け取る前に削除された場合に、ibus-mode が異常終了する不具合を修正 (LP #930820)
-同期通信において、タイムアウト前に &quot;Couldn&#039;t receive data from agent.&quot; という不適当なエラーメッセージが表示されるのを修正
-IBus にハンドルされないキーイベントに対して前置引数が効かない不具合を修正
-複数ストロークのキーシーケンスに対するエコー領域の表示を修正
-IBus にハンドルされないキーイベントに対して Emacs のコマンドをの fallback として事項する時、キーイベントのキューに入れずに直接実行するように変更（C-x 等の前置キーイベントを除く）
-README.Debian ファイルを削除 (Debian #648596)
(&amp;link_anchor(changelog){更新履歴はこちら})

*ダウンロードとインストール

**手動でインストールする場合
まず、以下のファイルをダウンロードします。

&amp;ref(ibus-el-0.3.1.tar.gz)（ftpダウンロードは[[ここ&gt;http://www11.atwiki.jp/s-irie/pub/emacs/ibus/ibus-el-0.3.1.tar.gz]]からどうぞ。）

ダウンロードしたファイルを展開し、ibus.elをEmacsのロードパスの通ったディレクトリに保存してバイトコンパイルします。ibus-el-agentも適当なディレクトリに保存します（ibus.elと同じディレクトリか、/usr/lib/ibus-el, /usr/share/ibus-elなどに入れると、ibus.elのロード時に勝手に見付けてくれます）。

md5sumやGnuPGの署名を検証したい方は[[Launchpad内のダウンロードページ&gt;https://launchpad.net/ibus.el/+download]]をご利用ください。

**debパッケージを利用する場合
debパッケージは[[LaunchpadのPPA&gt;https://launchpad.net/~irie/+archive/elisp]]に置いてあります。
Ubuntuの場合、以下のコマンドを実行してください。
 sudo add-apt-repository ppa:irie/elisp
 sudo apt-get update
 sudo apt-get install ibus-el
なお、Maverick, Lucid, Karmicのパッケージに違いはありません。

*使い方
**目次

-&amp;link_anchor(basic){基本の設定}
-&amp;link_anchor(various){いろいろな設定}
--&amp;link_anchor(switch-mode){入力モードの切り換え方法}
--&amp;link_anchor(key-binding){キーバインドの設定}
--&amp;link_anchor(kana-thumbshift){かな入力方式・親指シフト入力を使うための設定}
--&amp;link_anchor(cursor){カーソルの色・形状・表示位置の設定}
--&amp;link_anchor(undo-behavior){アンドゥの挙動を変える設定}
--&amp;link_anchor(candidate-window){候補ウインドウの位置を調整する設定}
-&amp;link_anchor(others){その他の設定}
--&amp;link_anchor(disable-keymap){ibus-modeのキーマップを一時的に無効にする}
-&amp;link_anchor(imengines){インプットメソッド別の設定}
--&amp;link_anchor(ibus-anthy){ibus-anthy}
--&amp;link_anchor(ibus-skk){ibus-skk}
--&amp;link_anchor(ibus-mozc){ibus-mozc}

**&amp;aname(basic,option=nolink){基本の設定}

ibus.el をEmacsのロードパスの通ったディレクトリに保存し、バイトコンパイルします。DebianやUbuntuの場合はdebパッケージを利用するといいでしょう。

.emacsファイルに以下の内容を追加します。
 (require &#039;ibus)
 (add-hook &#039;after-init-hook &#039;ibus-mode-on)

ibus-modeを有効にするには、XIMを無効化してキーイベントを横取りされないようにする必要があります。ターミナルから以下のようにEmacsを起動します。
 XMODIFIERS=@im=none emacs

Emacs利用時に常にXIMを無効にしたい場合は、上記の方法よりもXリソースを設定する方がよいでしょう。ホームディレクトリの.Xresourcesファイルに
 Emacs*useXIM: false
という行を追加し、ターミナルからコマンド
 xrdb ~/.Xresources
を実行するか、一旦ログアウトしてXサーバを再起動した後、Emacsを起動します。

**&amp;aname(various,option=nolink){いろいろな設定}

.emacsファイルのibus.elを読み込んだ後の部分に、その他の設定を書きます。
 (require &#039;ibus)
 (add-hook &#039;after-init-hook &#039;ibus-mode-on)
 
 ここに設定を書く

.emacsファイルの設定例です。
 (require &#039;ibus)
 (add-hook &#039;after-init-hook &#039;ibus-mode-on)
 
 ;; C-SPC は Set Mark に使う
 (ibus-define-common-key ?\C-\s nil)
 ;; C-/ は Undo に使う
 (ibus-define-common-key ?\C-/ nil)
 ;; IBusの状態によってカーソル色を変化させる
 (setq ibus-cursor-color &#039;(&quot;red&quot; &quot;blue&quot; &quot;limegreen&quot;))
 ;; C-j で半角英数モードをトグルする
 (ibus-define-common-key ?\C-j t)

なお、ほとんどの設定はGUI(custom-mode)で行うこともできす。キーボードから M-x customize-group RET ibus RET と入力するか、GUI で Emacs Group &gt; Editing Group &gt; Ibus Group と辿って開始して下さい。

***&amp;aname(switch-mode,option=nolink){入力モードの切り換え方法}
デフォルトではバッファ毎にインプットメソッドの状態を保持します。すべてのバッファで入力状態を共有したい場合は、次のように設定してください。
 (setq ibus-mode-local nil)

***&amp;aname(key-binding,option=nolink){キーバインドの設定}
-C-SPC は Set Mark に使う
 (ibus-define-common-key ?\C-\  nil)
-C-/ は Undo に使う
 (ibus-define-common-key ?\C-/ nil)

上の2つは1行にまとめることができます。
 (ibus-define-common-key [?\C-\  ?\C-/]  nil)

逆に、IBusに渡すキーイベントを追加するには、第2引数を非nilにします。
-C-henkan をIBusで使用する
 (ibus-define-common-key &#039;C-henkan t)

プリエディット時にだけIBusに送るキーイベントを変更するには関数ibus-define-preedit-keyを使います。
-プリエディット時のみ C-henkan をIBusで使用する
 (ibus-define-preedit-key &#039;C-henkan t)

補足：EmacsはキーボードにMetaキーがない場合、AltキーをMetaキーと見なしますが、ibus-modeの設定では実際のキー名で指定します。例えば、Alt + 漢字 は、Emacsのキーイベントとしては M-zenkaku-hankaku になりますが、IBusの設定と同じくAltを使って A-kanji と指定します。

***&amp;aname(kana-thumbshift,option=nolink){かな入力方式・親指シフト入力を使うための設定}
-かな入力方式で「ー」（長音記号）を入力できるようにする(jp-106キーボードのみ)
デフォルト状態では、バックスラッシュキー(＼)と円記号キー(￥)を区別できないため、かな入力方式で「ー」を入力するにはシフトキーを押さなければなりません。シフトキーを押さずに入力できるようにするには、次のように記述します。
 (setq ibus-use-kana-onbiki-key t)
この設定により、入力フォーカスがEmacsにあるときにだけ一時的にxmodmapで代替のKeySymを割り当てています。デフォルトでは代替のKeySymとして&quot;F24&quot;を使います。

&quot;F24&quot;のような代替のKeysymを使わずに、IBusがオンの時に円記号キー(￥)を縦棒(｜)に置き換えるようにする場合は、さらに次の行を追加します。
 (setq ibus-kana-onbiki-x-keysym &quot;bar&quot;
       ibus-kana-onbiki-key-symbol nil)

-親指シフト方式を使う場合の同時打鍵判定時間(単位は秒)
同時打鍵判定はEmacs側で独自に行います。0.1〜0.2秒程度に設定します。
 (setq ibus-simultaneous-pressing-time 0.1)
判定方法の都合上、IBusがオンの時に、単独打鍵に対してこの時間だけ文字の出るタイミングが遅れますので、あまり大きな値を設定しない方が良いです。特に、ローマ字入力やかな入力しか使わない場合は、nil(デフォルト値)にしておいてください。

***&amp;aname(cursor,option=nolink){カーソルの色・形状・表示位置の設定}
-変換候補表示中のカーソルの位置および形状を変える
 (setq ibus-cursor-color &quot;red&quot;)
これで、IBusがオンの時にカーソル色が赤になります。オフ時のカーソル色も指定したい場合はコンスセルで指定します。例えば
 (setq ibus-cursor-color &#039;(&quot;red&quot; . &quot;blue&quot;))
とすると、オンで赤、オフで青になります。更に、IBusが無効化された状態(バッファがread onlyの時や、viシミュレータ(viper-modeなど)におけるvi状態の時など)でカーソル色を変えたい場合は、リストで指定します。
無効化時にカーソル色を文字のforeground colorと同色にする場合：
 (setq ibus-cursor-color &#039;(&quot;red&quot; &quot;blue&quot;))
無効化時にカーソル色を緑(limegreen)にする場合：
 (setq ibus-cursor-color &#039;(&quot;red&quot; &quot;blue&quot; &quot;limegreen&quot;))

-変換候補表示中のカーソルの位置および形状を変える
デフォルトの状態では、変換候補表示中のカーソルの形状は縦棒になります。変換候補表示にカーソルを通常の形状でプリエディット領域の末尾に表示したい場合、次のように設定します。
 (setq ibus-cursor-type-for-candidate 0)
 (setq ibus-put-cursor-on-candidate nil)

-インクリメンタル検索中のカーソル形状を変更する
インクリメンタル検索(isearch-mode)から抜けてテキストの編集を再開しようとした時に、実はまだisearch-modeから抜けていなくて余計な検索をしてしまう、ということがあります。検索中にカーソル形状が変わるようにすれば、このような失敗を防げます。例えば
 (setq ibus-isearch-cursor-type &#039;hollow)
とすると、検索中は塗りつぶされていない箱型のカーソルになります。(このオプションはインプットメソッドとは直接関係はありません。)

***&amp;aname(undo-behavior,option=nolink){アンドゥの挙動を変える設定}
-アンドゥの時に、文字列を確定した位置ごとに戻るようにする
デフォルトでは、アンドゥは20カラムごとに行われるようになっています。文節単位で確定するような使い方をする場合、確定した位置まで戻るようにする方が便利でしょう。
 (setq ibus-undo-by-committed-string t)
ただし、ibus-skkの直接入力などの、1文字ずつコミットしていくタイプのインプットメソッドでは1文字ずつアンドゥするようになってしまいます。

***&amp;aname(candidate-window,option=nolink){候補ウインドウの位置を調整する設定}
標準の状態では、変換候補ウインドウ内の候補の文字列がカーソル位置よりもかなり右方向に離れて表示されて少し見づらいですね。オプション `ibus-candidate-window-h-offset&#039; と `ibus-prediction-window-h-offset&#039; で、候補ウインドウの表示位置を水平方向にピクセル単位で調節することができます。

 ;; 候補ウインドウを左へ57ピクセルずらして表示
 (setq ibus-candidate-window-h-offset -57)
 
 ;; 予測ウインドウを左へ50ピクセルずらして表示
 (setq ibus-prediction-window-h-offset -50)

**&amp;aname(others,option=nolink){その他の設定}

以下の設定はGUIではできません。.emacsファイルに記述するか、M-xをタイプしてミニバッファで入力してください。

-&amp;aname(disable-keymap,option=nolink){ibus-modeのキーマップを一時的に無効にする}
ibus-modeと相性の悪いメジャーモードやマイナーモードがある場合は、次のようにしてibus-modeのキーマップを無効化すると良いかもしれません。
 M-x ibus-disable-keymap
元に戻す場合は、
 M-x ibus-enable-keymap
特定のメジャーモードでibus-modeのキーマップを無効にする場合には.emacsファイルに次のように記述します(例：hoge-mode)。
 (add-to-list &#039;ibus-incompatible-major-modes &#039;hoge-mode)

**&amp;aname(imengines,option=nolink){インプットメソッド別の設定}

使用するインプットメソッドによっては、追加の設定が必要な場合があります。
***&amp;aname(ibus-anthy,option=nolink){ibus-anthy}

かな入力と親指シフト入力に関しては、&amp;link_anchor(kana-thumbshift){上述}の通りです。

-半角英数モードをトグルするために C-j を使う
 (ibus-define-common-key ?\C-j t)

***&amp;aname(ibus-skk,option=nolink){ibus-skk}

-C-jでひらがなモードに戻せるようにする
 (ibus-define-common-key ?\C-j t)

***&amp;aname(ibus-mozc,option=nolink){ibus-mozc}

かな入力に関しては、&amp;link_anchor(kana-thumbshift){上述}の通りです。

-予測候補ウィンドウの表示位置の変更
デフォルトでは、予測候補ウィンドウをプリエディット領域の先頭位置に表示します。この挙動は他のアプリケーションで ibus-mozc を使う場合と異なっていますが、ウィンドウが移動しないので速度的には有利です。ただし、画面下方ではこのウィンドウによってプリエディット領域が覆い隠されてしまうことがあります。他のアプリケーションと同様にカーソル位置で予測候補ウィンドウを表示するには以下のようにします。
 (setq ibus-prediction-window-position t)

*&amp;aname(changelog,option=nolink){更新履歴}

2012.02.14 version 0.3.1
-surrounding text をサポートしない古いバージョンの IBus (&lt; 1.4.0) でエラーが発生する不具合を修正 (LP #930015)
-新しく生成されたバッファが IBus daemon から IMContext ID を受け取る前に削除された場合に、ibus-mode が異常終了する不具合を修正 (LP #930820)
-同期通信において、タイムアウト前に &quot;Couldn&#039;t receive data from agent.&quot; という不適当なエラーメッセージが表示されるのを修正
-IBus にハンドルされないキーイベントに対して前置引数が効かない不具合を修正
-複数ストロークのキーシーケンスに対するエコー領域の表示を修正
-IBus にハンドルされないキーイベントに対して Emacs のコマンドをの fallback として事項する時、キーイベントのキューに入れずに直接実行するように変更（C-x 等の前置キーイベントを除く）
-README.Debian ファイルを削除 (Debian #648596)

2011.12.24 version 0.3.0
-surrounding text に対応
-オプション `ibus-candidate-window-h-offset&#039; を追加
-オプション `ibus-prediction-window-h-offset&#039; を追加
-コマンド `ibus-enable-specified-engine&#039; を追加
-IBus のバージョン 1.3.8 以降で、ibus-prediction-window-position=0 の設定がミニバッファ内でも有効になるように変更
-太さ 0 のアンダーラインを表示するように変更
-`table-insert&#039;で作成した表が、プリエディットが異常終了した場合に壊れる可能性がある問題を修正
-m17n 等のいくつかのエンジンでプリエディットが異常終了してしまう事がある問題を修正
-Ubuntu の Unity desktop 上で、get_input_focus() がしばしば誤ってルートウィンドウを返すために入力フォーカスが検出できない問題を修正
-auto-fill-mode が動作しない不具合を修正 (LP #784452)
-StumpWM で入力フォーカスの状態が正常に取得できない不具合を修正 (LP #856358)

2010.11.03 version 0.2.1
-vim-modeのサポートを追加
-`ibus-agent-file-name&#039; の検索パスにlibexecディレクトリを追加
-半角英数モードにおいてキーイベントに対する元々の動作をシミュレートするために、fallbackのコマンドを実行するように変更(IBus issue #1058)
-オプション `ibus-kana-onbiki-x-keysym&#039; および `ibus-kana-onbiki-key-symbol&#039; を無効にできるように、カスタマイズ型を修正
-カーソル色をリセットするときに、テーマの色を考慮するように修正
-非Xフレームに対して不必要にカーソル色をセットしないように修正
-コマンド実行中に不必要にカレントバッファをチェックしないように修正
-非XフレームからXフレームに切り替えるとキーマップが更新されない場合がある不具合を修正
-モニターの電源が省電力機能で自動的に切れると、ibus-modeが異常終了する不具合を修正
-複数フレームの1つでemacs−w3mを起動すると、他のバッファのうちの1つでキーマップが無効化されてしまう不具合を修正
-ibus-mode開始時またはディスプレイ切替時に、ibus-el-agentがXのディスプレイへの接続に失敗してクラッシュする場合がある問題を修正したかも(RH bug #627358)

2010.08.19 version 0.2.0
-`ibus&#039; グループの親グループに `i18n&#039; を追加
-オプション `ibus-agent-start-ibus-daemon&#039; を追加
-デフォルトではibus-daemonを自動的に起動しないように変更 ([[RH bug #620349&gt;https://bugzilla.redhat.com/show_bug.cgi?id=620349]])
-xwininfoを使わないように変更
-Xのルートウインドウの「_NET_ACTIVE_WINDOW」プロパティを使わないように変更
-複数ディスプレイ環境で複数の異なるレイアウトのキーボードを使う場合でも、Alt-Meta間の変換が正常に動作するように修正
-カスタム変数の説明文字列を書き直した
-内部的なオプションibus-meta-key-existsを削除
-keyvalが非アルファベットのASCII文字の場合に、Shiftキーが無視される不具合を修正
-isearch-modeでibus-toggleコマンドを使うとミニバッファが消去されてしまう不具合を修正
-isearch-mode-mapにおいて C-\ がibus-toggleコマンドに割付けられ、かつ `ibus-use-kana-onbiki-key&#039; が非nilの場合に、Xのキーマップが正常に書き換えられない不具合を修正
-他のアプリケーションからフォーカスインした後、最大約0.3秒間キーマップが無効になっている不具合を修正
-キーボードにMetaキーが有る場合に、Alt + Romajiが無視される不具合を修正
-キーボードにMetaキーが有る場合に、forward_key_eventがRomajiキーをHiragana_Katakanaキーに誤変換する不具合を修正
-複数ディスプレイ環境でibus-el-agentがインデックスエラー(list index out of range)を発生することがある問題を修正
-ibus-modeが異常終了した後にpost-command-hookが実行される可能性がある不具合を修正
-インクリメンタル検索時に `english-dvorak&#039; インプットメソッドとIBusを併用できない不具合を修正
-ヘッダーラインが表示されている時にtext-scale-modeをオフにすると、行の高さとして誤った値が使われる不具合を修正
-インクリメンタル検索にIBusを使うと、時々 &quot;&lt;ibus-resume-preedit&gt; is undefined&quot; というエラーが出る不具合を修正
-インクリメンタル検索にIBusを使うと、時々誤ってプリエディット文字列がカレントバッファに挿入されてしまう不具合を修正

2010.06.11 version 0.1.1
-オプション `ibus-prediction-window-position&#039; を追加
-オプション `ibus-agent-buffering-time&#039; を追加
-Key release イベントをエージェントに送る必要がないように変更
-カーソル位置が変化しなかった場合に座標をエージェントに送信しないように変更
-プリエディットが空の場合に不必要な空文字列をEmacsが受け取らないように変更
-不必要になっていたイベント `ibus-dummy-event&#039; を使わないように変更
-文字列確定の直後にカーソル位置を送信しないようにした
-ibus-anthy の「フォーカスアウト時の動作」を「保持」 に設定している場合に、正常動作するようにした
-同一のバッファを表示している別フレームを選択した時に、プリエディットを再描画するようにした
-ヘッダーライン表示時に text-scale-mode で候補ウインドウの位置がずれる不具合を修正
-多数のフレームを使用していると、post-command-hook が非常に重たくなる不具合を修正
-IBus 1.3で使用すると、ibus-mode が突然 終了することがある不具合を修正
-エージェントによるIBusデーモンの起動が失敗することがある不具合を修正

2010.05.29 version 0.1.0
-初公開

----    </description>
    <dc:date>2012-02-14T17:14:33+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/11.html">
    <title>Software</title>
    <link>http://www11.atwiki.jp/s-irie/pages/11.html</link>
    <description>
      **Softwareのぺえじ
フリーソフトウェア置き場です。ご自由にどうぞ。
自作した物と、既存のフリーソフトウェアを改変した物があります。

*Emacs関係
***[[ibus.el]]
IBusのEmacs用クライアントです。Emacsでも他のアプリケーションと同様の日本語入力ができます。
***[[scim-bridge.el]]
scim-bridgeのEmacs用クライアントです。Emacsでも他のアプリケーションと同様の日本語入力ができます。
***[[menu-tree.el]] for Emacs 22, 23
Emacsのメニューを日本語にするファイルをバージョン22と23用に書き直してみました。
***[[redo+.el]]
redo.elの改良版です。バグ修正と若干の機能追加をしました。
***[[grass.el]]
ちょっと草植えときますね型言語Grassで遊ぶためのプログラムですｗｗｗｗｗ

*Nautilus関係
***[[nautilus-script置き場&gt;nautilus-script]]
ファイルマネージャのNautilusで右クリックメニューから呼び出せるスクリプトです。
選択したファイルを隠しファイルにするスクリプトなどがあります。

----

- ツッコミ・質問等をどうぞ。  -- irie  (2008-05-15 16:34:49)
- scim-bridge.elだけど、ERC使ってIRCをしていると日本語入力中に行が挿入されたりするけど、そうなると表示が崩れたりするのは直せたりしますか？  -- home  (2008-08-17 13:04:09)
- すみません、単に表示が崩れるだけの問題ではないので、今のところERCには対応できていません。  -- irie  (2008-08-30 14:11:48)
- 了解です。いつか対応されることを願っています！  -- home  (2008-09-02 00:05:13)
- scim-bridge.el 再配布してしたいのですが、よいですか?  -- 某ディストロパッケージャー  (2008-11-10 15:01:22)
- すみません、返事が遅れました。再配布はご自由にどうぞ。ただ、パッケージの依存関係には気を付けて下さい。  -- irie  (2008-12-06 17:00:40)
- Ubuntu9.10ではSCIMからIBusになりますが、対応予定はありますか？ぜひ ibus-bridge.el を作って欲しいです。  -- sweat  (2009-09-21 16:19:17)
- 今のところその予定はないです。ibusはD-Bus経由でクライアントとやりとりするのでEmacs23に限定されること、ibusのプロトコルが文書化されていないのでよくわからないことなどから、なかなか手を出しにくい状況です。  -- irie  (2009-09-25 00:20:50)
- 了解しました。Ubuntu9.10 ではSCIMも使えますので当分はscim-bridge.el でしのげそうです。複数のアジア系言語を常用しておりますのでscim-bridge.elが離せません。可能であればibusに対応していただけるよう、お願いいたす次第です。  -- sweat  (2009-10-03 20:36:08)
- hatenaのほうにコメント書いたのですが、「画像認証」を通過できません。  -- たかちゃん  (2010-08-19 11:47:53)
- IME は ibus-mozc を利用していて「ことえり」の &amp;quot;かな入力&amp;quot; で日本語を打っていますが読点の「、」が入力できません。Shift+, で「、」を打ちたいのですが、Shiftキーを押しても押さなくても「ね」が表示されてしまいます。  ibus-mozc をサラで利用した場合、例えばターミナルとか firefox で利用した場合には「、」は入力できるのですが、ibus.el+ibus-mozc を利用したときに「、」が打てません。  -- たかちゃん  (2010-08-19 11:48:32)
- ありがとうございました。Version 0.2.0で &amp;quot;、&amp;quot; が無事に打てるようになりました。  -- たかちゃん。  (2010-08-20 14:57:23)
- emacs-23.3 になったらインラインで日本語の入力ができなくなってしまいました。もし、お時間があるようでしたら一回見て頂けると嬉しく思います。  -- たかちゃん。  (2011-06-14 11:04:55)
- すみません。一個家のコメントですが、どうやら僕の思い違いだったようで無事に動作しているようです。大変申し訳ありませんでした。  -- たかちゃん。  (2011-06-15 09:54:49)
- ibus.el が emacs 24.0.50 で error: Hex character out of range: \x20000... となります。対応策があればお教えいただきたく存じます。  -- 新岡  (2011-07-17 17:40:22)
- `?&#039;を使って表現せずに#x200... とすればおｋだと思いますよ  -- emacs脳  (2011-08-03 15:19:17)
- ありがとうございます。#x200.. で解決しました。  -- 新岡  (2011-08-10 16:41:14)
- Fedora15までは動いていましたが、Fedora16ではibus-toggle()が正常に動いていません。カーソルの色とかは変化します。まだモードステイタス表示がIBus[xkb:layout:default:#0]と表示されています。一度確認お願いします。  -- まつ  (2011-12-12 14:13:33)
- いろいろと設定をしてみましたが。emacsを起動直後は必ず「ibus-enable」になっています。「engine-name」が正しく設定出来ていないようです。半角/全角キーを一度押すと認識してくれます。でも.emacsに(add-hook &#039;after-init-hook &#039;ibus-enable-specified-engine &amp;quot;anthy&amp;quot;と書いてもダメでした。受け付けてくれません。  -- まつ  (2012-02-09 18:28:03)
#comment()    </description>
    <dc:date>2012-02-09T18:28:03+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/13.html">
    <title>menu-tree.el</title>
    <link>http://www11.atwiki.jp/s-irie/pages/13.html</link>
    <description>
      #center(){&amp;sizex(7){menu-tree.elのぺえじ}}

*これは何？
Emacsのメニューを上書きして日本語にするアレです。
新しいバージョン(22と23)のGNU Emacsで使えるようにしました。
X11版のEmacsでは文字化けするので、GTK版で使ってください。
Meadowの場合はversion 3.0で使えます。

*ダウンロード

&amp;ref(menu-tree-el-0.97.tar.gz) (2010.11.30 更新)

*使い方
menu-tree.el をEmacsのロードパスの通ったディレクトリに保存し、バイトコンパイルします。

.emacsファイルに以下の内容を追加します。
 (require &#039;menu-tree)

文字化けする場合は、menu-tree.elをロードする前にmenu-tree-coding-systemに適当なcoding-systemをセットします。
 (if (and (= emacs-major-version 22)
          (eq window-system &#039;x))
     (setq menu-tree-coding-system &#039;utf-8))
 (require &#039;menu-tree)
「utf-8」の部分は各自の環境に合わせて設定してください。

*debパッケージのビルド
Version 0.94から、debパッケージをビルドするためのファイルが入っています。以下のようにしてビルドすることができます（ただしdebuildが必要）。
 $ tar xvzf menu-tree-el-0.94.tar.gz
 $ cd menu-tree-el-0.94
 $ debuild -us -uc

----    </description>
    <dc:date>2010-12-01T12:40:12+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/12.html">
    <title>scim-bridge.el</title>
    <link>http://www11.atwiki.jp/s-irie/pages/12.html</link>
    <description>
      #center(){&amp;sizex(7){scim-bridge.elのぺえじ}}

*これは何？
Emacsで、日本語や中国語などの文字列をSCIMを経由して入力するためのマイナーモード(scim-mode)です。
scim-bridgeのクライアントとして動作します。
([[スクリーンショット&gt;scim-modeのスクリーンショット]])

GNU Emacs 22, 23用です。XEmacsでは無理だと思います。
scim-bridgeが必要です。素のSCIMでは使えません。

質問・ツッコミはこちらのページへお願いします→[[irieめも@はてな&gt;http://d.hatena.ne.jp/iRiE/20100626/1277575294]](または[[Softwareのぺえじ&gt;Software]])


*特徴
SCIMの提供する機能はほとんど使えます。一般的なEmacs用のInput Methodとは異なり、Emacsの起動時にマイナーモードをONにして使うことを想定しています。
-できること
--バッファ毎に入力モードの切り替えができます。
--C-SPCとかC-/をSCIMに渡さないように設定できます。
--かな入力方式、親指シフト入力方式に対応した（つもり）。
--SCIMのon/off状態によってカーソルの色を変えられます。
--インクリメンタル検索（isearch-mode）で使用できます。
--候補ウインドウの表示位置を細かく設定できます。
--フェイスを独自に設定できます。
-できないこと
--端末エミュレータ上では使えません。
--モディファイアキー(shiftやcontrol)単独の押下は検出できません。

*ダウンロード

&amp;ref(scim-bridge-el-0.8.2.tar.gz) (2010.06.26 更新)
ftpダウンロードは[[ここ&gt;http://www11.atwiki.jp/s-irie/pub/emacs/scim-bridge/scim-bridge-el-0.8.2.tar.gz]]からどうぞ

debパッケージは[[LaunchpadのPPA&gt;https://launchpad.net/~irie/+archive/elisp]]に置いてあります。

version 0.8.1からの変更点
-カーソル位置が変化しなかった場合に座標をエージェントに送信しないように変更
-ミニバッファ内では `scim-prediction-window-position&#039; の値にかかわらず、常に予測候補ウインドウをカーソル位置に表示するように変更
-不必要になっていたイベント `scim-dummy-event&#039; を使わないように変更
-同一のバッファを表示している別フレームを選択した時に、プリエディットを再描画するようにした
-ヘッダーライン表示時に text-scale-mode で候補ウインドウの位置がずれる不具合を修正
-`scim-prediction-window-position&#039;がデフォルト値でない場合に、予測ウインドウが誤った位置に表示されることがある不具合を修正
-多数のフレームを使用していると、post-command-hook が非常に重たくなる不具合を修正
-`scim-use-kana-ro-key&#039; が非nilの場合に、Xのキーマップが誤って変更される可能性がある不具合を修正
-他のアプリケーションからフォーカスインした後、最大約1秒間キーマップが無効になっている不具合を修正
(&amp;link_anchor(changelog){更新履歴はこちら})

*使い方
**目次

-&amp;link_anchor(basic){基本の設定}
-&amp;link_anchor(various){いろいろな設定}
--&amp;link_anchor(switch-mode){入力モードの切り換え方法}
--&amp;link_anchor(key-binding){キーバインドの設定}
--&amp;link_anchor(kana-thumbshift){かな入力方式・親指シフト入力を使うための設定}
--&amp;link_anchor(cursor){カーソルの色・形状・表示位置の設定}
--&amp;link_anchor(candidate-window){候補ウインドウ表示の設定}
--&amp;link_anchor(undo-behavior){アンドゥの挙動を変える設定}
--&amp;link_anchor(faces){フェイスの設定}
-&amp;link_anchor(others){その他の設定}
--&amp;link_anchor(re-convert){Anthyで再変換するときに簡単に範囲選択できるようにする}
--&amp;link_anchor(switch-after-input){アスキーモードのままローマ字入力してしまった時に、プリエディットに入れ直す}
--&amp;link_anchor(disable-keymap){scim-modeのキーマップを一時的に無効にする}
--&amp;link_anchor(toggle-scim-mode){入力モードのトグルでscim-mode自体もon/offする設定}
-&amp;link_anchor(imengines){IMEngine別の設定}
--&amp;link_anchor(scim-skk){SCIM-SKK}
--&amp;link_anchor(scim-ruby){SCIM-Ruby}

**&amp;aname(basic,option=nolink){基本の設定}

scim-bridge.el をEmacsのロードパスの通ったディレクトリに保存し、バイトコンパイルします。DebianやUbuntuの場合はdebパッケージを利用するといいでしょう。

.emacsファイルに以下の内容を追加します。
 (require &#039;scim-bridge)
 (add-hook &#039;after-init-hook &#039;scim-mode-on)

付属のscim-bridge-ja.elを併せて用いれば、変数や関数の説明文字列を日本語に差し替える他、日本語向けの便利な関数が利用可能になります。scim-bridge.el及びscim-bridge-ja.elの両方をロードパスの通ったディレクトリに保存し、.emacsファイルの記述を以下のようにします。
 (require &#039;scim-bridge-ja)
 (add-hook &#039;after-init-hook &#039;scim-mode-on)

Emacsを起動するときは、XIMを無効化する必要がありますので、ターミナルから
 XMODIFIERS=@im=none emacs
と打ち込むか、ランチャに次のコマンドを登録しておいて起動します。
 env XMODIFIERS=@im=none emacs %F

Xリソースを設定してXIMを無効化する方法もあります。ホームディレクトリの.Xresourcesファイルに
 Emacs*useXIM: false
という行を追加し、ターミナルからコマンド
 xrdb ~/.Xresources
を実行するか、一旦ログアウトしてXサーバを再起動した後、Emacsを起動します。

**&amp;aname(various,option=nolink){いろいろな設定}

.emacsファイルのscim-bridge.elを読み込んだ後の部分に、その他の設定を書きます。
 (require &#039;scim-bridge) ;; ←または(require &#039;scim-bridge-ja)
 (add-hook &#039;after-init-hook &#039;scim-mode-on)
 
 ここに設定を書く

.emacsファイルの設定例です。
 (require &#039;scim-bridge-ja)
 (add-hook &#039;after-init-hook &#039;scim-mode-on)
 
 ;; C-SPC は Set Mark に使う
 (scim-define-common-key ?\C-\s nil)
 ;; C-/ は Undo に使う
 (scim-define-common-key ?\C-/ nil)
 ;; SCIMの状態によってカーソル色を変化させる
 (setq scim-cursor-color &#039;(&quot;red&quot; &quot;blue&quot; &quot;limegreen&quot;))
 ;; C-j で半角英数モードをトグルする
 (scim-define-common-key ?\C-j t)
 ;; SCIM-Anthy 使用時に、選択領域を再変換できるようにする
 (scim-define-common-key &#039;S-henkan nil)
 (global-set-key [S-henkan] &#039;scim-anthy-reconvert-region)
 ;; SCIM がオフのままローマ字入力してしまった時に、プリエディットに入れ直す
 (global-set-key [C-henkan] &#039;scim-transfer-romaji-into-preedit)
ただし、scim-anthy-reconvert-region と scim-transfer-romaji-into-preedit はscim-bridge-ja.elで定義されているコマンドなので、(require &#039;scim-bridge)とした場合には利用できません。)

ほとんどの設定はGUI(custom-mode)によっても行えます。
設定の場所は Emacs Group &gt; Editing Group &gt; Scim Group です。

注意：SCIM-Bridgeのバージョンが0.4.12以前の場合、
+キーマップの切り替えがうまくいかないため、デフォルトの状態では日本語入力ができない
+インクリメンタル検索で使えない
+カーソルの色が変わらない
+SCIMがオンの時も入力フォーカス監視の周期が遅いままになる
などの制限があります。これは、古いバージョンのSCIM-Bridgeでは入力状態（SCIMのオン/オフ）が検出できないためです。
特に1は致命的です。これを回避するには
 (setq scim-use-minimum-keymap nil)
という設定を追加して下さい。

***&amp;aname(switch-mode,option=nolink){入力モードの切り換え方法}
-&amp;del(){バッファごとに入力モードを切り替える}
 (setq scim-mode-local t)
&amp;del(){なぎさたん(スクリーンキーボード)を使う場合はこの設定をしてください。}
この設定はversion 0.6.9からデフォルトになりましたので、必要ありません。


Emacs全体でグローバルに入力モードの切り替えを行いたい場合は、次のように設定してください。
 (setq scim-mode-local nil)

***&amp;aname(key-binding,option=nolink){キーバインドの設定}
-C-SPC は Set Mark に使う
 (scim-define-common-key ?\C-\  nil)
-C-/ は Undo に使う
 (scim-define-common-key ?\C-/ nil)

上の2つは1行にまとめることができます。
 (scim-define-common-key [?\C-\  ?\C-/]  nil)

逆に、SCIMに渡すキーイベントを追加するには、第2引数をnil以外にします。
-C-henkan をSCIMで使用する
 (scim-define-common-key &#039;C-henkan t)

プリエディット時にだけSCIMに送るキーイベントの設定には関数scim-define-preedit-keyを使います。
-プリエディット時のみ C-henkan をSCIMで使用する
 (scim-define-preedit-key &#039;C-henkan t)

補足：EmacsはキーボードにMetaキーがない場合、AltキーをMetaキーと見なしますが、ここでの設定は元のキー名で指定します。例えば、Alt + 漢字 は、Emacsでは M-zenkaku-hankaku ですが、SCIMの設定そのままに A-kanji と指定します。

***&amp;aname(kana-thumbshift,option=nolink){かな入力方式・親指シフト入力を使うための設定}
-かな入力方式で「ろ」を入力できるようにする(jp-106キーボードのみ)
 (setq scim-use-kana-ro-key t)
バックスラッシュキー(＼)と円記号キー(￥)を区別するために、入力フォーカスがEmacsにあるときにだけ一時的にxmodmapで代替のKeySymを割り当てています。デフォルトでは代替のKeySymとして&quot;F24&quot;を使います。
単にバックスラッシュ(＼)を下線(＿)に置き換えるだけでよい場合は、さらに次の行を追加します。
 (setq scim-kana-ro-x-keysym &quot;underscore&quot;
       scim-kana-ro-key-symbol nil)

-親指シフト方式を使う場合の同時打鍵判定時間(単位は秒)
同時打鍵判定はEmacs側で独自に行うので、SCIM-Anthyの設定値に関わらず短め(0.1秒程度)に設定します。
 (setq scim-simultaneous-pressing-time 0.1)
注意：実装方法の都合上、この値をあまり大きく設定すると、文字の出るタイミングが遅くなってしまいます。特に、ローマ字入力やかな入力しか使わない場合は、nil(デフォルト値)にしておいてください。

***&amp;aname(cursor,option=nolink){カーソルの色・形状・表示位置の設定}
-変換候補表示中のカーソルの位置および形状を変える
 (setq scim-cursor-color &quot;red&quot;)
これで、SCIMがオンの時にカーソル色が赤になります。オフ時のカーソル色も指定したい場合はコンスセルで指定します。例えば
 (setq scim-cursor-color &#039;(&quot;red&quot; . &quot;blue&quot;))
とすると、オンで赤、オフで青になります。更に、SCIMが無効化された状態(バッファがread onlyの時や、VIエミュレーションにおけるVI状態の時など)でカーソル色を変えたい場合は、リストで指定します。
無効化時にカーソル色を文字のforeground colorと同色にする場合：
 (setq scim-cursor-color &#039;(&quot;red&quot; &quot;blue&quot;))
無効化時にカーソル色を緑(limegreen)にする場合：
 (setq scim-cursor-color &#039;(&quot;red&quot; &quot;blue&quot; &quot;limegreen&quot;))

-変換候補表示中のカーソルの位置および形状を変える
デフォルトの設定では、変換候補表示中はカーソルをプリエディット領域の末尾に表示します。カーソルが変換候補の位置にあると見づらいためです。しかしこの設定だと、水平スクロールしているバッファでは変換候補が画面の外にでてしまい見えなくなってしまうことがあります。次のようにすることでこの問題を回避することができます。
 (setq scim-cursor-type-for-candidate &#039;bar)
 (setq scim-put-cursor-on-candidate t)
これで、棒状のカーソルを変換候補の位置に表示するようになります。

-インクリメンタル検索中のカーソル形状を変更する
インクリメンタル検索(isearch-mode)から抜けてテキストの編集を再開しようとした時に、実はまだisearch-modeから抜けていなくて余計な検索をしてしまう、ということがあります。検索中にカーソル形状が変わるようにすれば、このような失敗を防げます。例えば
 (setq scim-isearch-cursor-type &#039;hollow)
とすると、検索中は塗りつぶされていない箱型のカーソルになります。

***&amp;aname(candidate-window,option=nolink){候補ウインドウ表示の設定}
-変換候補ウインドウの水平位置を微調整する
候補ウインドウ内の変換候補が行内の変換候補の真下にくるように、左方向にずらします。ずらす量はGNOMEのフォントサイズの設定から計算します。
 (setq scim-adjust-window-x-position &#039;gnome)


変換候補ウインドウのずらす量をピクセル数で指定する場合は(例：24ドット左にずらす)
 (setq scim-adjust-window-x-position 24)

-予測変換ウインドウをプリエディット領域の先頭に表示する
ただし画面の下の方に来ると、カーソル位置が予測変換ウインドウに隠されてしまいます。
 (setq scim-prediction-window-position &#039;(t . nil))
または変換候補ウインドウと同様に微調整をする場合は
 (setq scim-prediction-window-position &#039;(t . t))

***&amp;aname(undo-behavior,option=nolink){アンドゥの挙動を変える設定}
-アンドゥの時に、文字列を確定した位置ごとに戻るようにする
ハングルやタイ語、SCIM-SKKの直接入力などの、1文字ずつコミットしていくタイプのIMEngineでは1文字ずつアンドゥするようになります。
 (setq scim-undo-by-committed-string t)

***&amp;aname(faces,option=nolink){フェイスの設定}

他のアプリケーションと見た目を変えたい場合は、以下のフェイスを適当に変更してください。
-scim-preedit-default-face
-scim-preedit-underline-face
-scim-preedit-hilight-face
-scim-preedit-reverse-face

**&amp;aname(others,option=nolink){その他の設定}

以下の設定はGUIではできません。.emacsファイルに記述するか、M-xをタイプしてミニバッファで入力してください。

-&amp;aname(re-convert,option=nolink){Anthyで再変換するときに簡単に範囲選択できるようにする}
デフォルトの設定でSCIM-Anthyの再変換機能を使う場合、Set Markしただけでは範囲指定できないため、予めマウスで選択するかM-wでキルリングに登録しておく必要があり、面倒です。scim-bridge-ja.el利用時には以下の設定をすると、[Shift]+[変換]を押すだけでカーソル位置の文節を再変換できるようになります。Set Markで範囲指定することもできます。
 (scim-define-common-key &#039;S-henkan nil)
 (global-set-key [S-henkan] &#039;scim-anthy-reconvert-region)
ただしSCIM-Anthyの設定で「再変換」のキーバインドを[Shift]+[変換]以外に変更した場合は、変数scim-anthy-reconversion-eventにも新しいキーイベントを設定する必要があります。

-&amp;aname(switch-after-input,option=nolink){アスキーモードのままローマ字入力してしまった時に、プリエディットに入れ直す}
うっかり日本語入力モードに切り換えずにローマ字入力してしまった場合、消去して打ち込み直すのは面倒です。scim-bridge-ja.el利用時には次のように設定すると、[Ctrl]+[変換]を押すと入力モードが切り換わってバッファの文字がプリエディット領域に入り、変換できます。Set Markで範囲指定することもできます。
 (global-set-key [C-henkan] &#039;scim-transfer-romaji-into-preedit)
ただしSCIMの設定で「SCIM開始」のキーバインドから[Control]+[Space]を削除した場合は、変数scim-toggle-input-method-eventにも新しいキーイベントを設定する必要があります。

-&amp;aname(disable-keymap,option=nolink){scim-modeのキーマップを一時的に無効にする}
scim-modeと相性の悪いメジャーモードやマイナーモードがある場合は、次のようにしてscim-modeのキーマップを無効化すると良いかもしれません。
 M-x scim-disable-keymap
元に戻す場合は、
 M-x scim-enable-keymap
特定のメジャーモードでscim-modeのキーマップを無効にする場合には.emacsファイルに次のように記述します(例：hoge-mode)。
 (add-hook &#039;hoge-mode-hook &#039;scim-disable-keymap)

-&amp;aname(toggle-scim-mode,option=nolink){入力モードのトグルでscim-mode自体もon/offする設定}
下のようにすると、C-oでon/offするように設定できます(無理やり)。ただしバッファローカルな切り替えはできません。(scim-mode t) の代わりに次のように書きます。
(global-set-key [?\C-o]
		(lambda () (interactive)
		  (if scim-imcontext-status
		      (scim-dispatch-key-event ?\C-\ ))
		  (if (scim-mode)
		      (scim-dispatch-key-event ?\C-\ ))))

**&amp;aname(imengines,option=nolink){IMEngine別の設定}

使用するIMEngineによっては、追加の設定が必要な場合があります。
***&amp;aname(scim-skk,option=nolink){SCIM-SKK}

普通のEmacs用のSKKを使えばいいと思いますが、一応…
-C-jでひらがなモードに戻せるようにする
 (scim-define-common-key ?\C-j t)

***&amp;aname(scim-ruby,option=nolink){SCIM-Ruby}
-ヒストリ機能のキーバインドを設定する
 (scim-define-common-key [?\C-h up down return] t)
ただし、scim-rubyだけのためにC-hの設定を変えてしまうのは不便なので、scim-ruby側の設定を変える方がいいと思います。



*&amp;aname(changelog,option=nolink){更新履歴}

2010.06.26 version 0.8.2
-カーソル位置が変化しなかった場合に座標をエージェントに送信しないように変更
-ミニバッファ内では `scim-prediction-window-position&#039; の値にかかわらず、常に予測候補ウインドウをカーソル位置に表示するように変更
-不必要になっていたイベント `scim-dummy-event&#039; を使わないように変更
-同一のバッファを表示している別フレームを選択した時に、プリエディットを再描画するようにした
-ヘッダーライン表示時に text-scale-mode で候補ウインドウの位置がずれる不具合を修正
-`scim-prediction-window-position&#039;がデフォルト値でない場合に、予測ウインドウが誤った位置に表示されることがある不具合を修正
-多数のフレームを使用していると、post-command-hook が非常に重たくなる不具合を修正
-`scim-use-kana-ro-key&#039; が非nilの場合に、Xのキーマップが誤って変更される可能性がある不具合を修正
-他のアプリケーションからフォーカスインした後、最大約1秒間キーマップが無効になっている不具合を修正

2010.05.29 version 0.8.1
-内部オプションscim-incompatible-major-modesの追加
-scim-cursor-type-for-candidateのデフォルト値を`bar&#039;に変更
-scim-put-cursor-on-candidateのデフォルト値をtに変更
-ソケットのオープンまたはIMコンテクストの登録に失敗した場合にscim-modeをoffにするように変更
-プロセスが異常終了してリスタートするときにメッセージを表示するようにした
-GUIセットアップユーティリティーでの設定変更時にscim-modeをリスタートするように変更
-プロセスバッファから認識不能なメッセージを読み込んだ場合、その全体を表示するようにした
-プリエディットが変更されずカーソル移動のみの場合に、書き直さないようにした
-かな入力方式で、環境によっては「ろ」が入力できない場合があった不具合を修正
-SCIM-Bridgeから受動的にシグナルを受け取った場合にpost-command-hookが発動しない不具合を修正
-コールバック関数中でエラーが起こるとキューがクリアされずに再度実行されてしまう不具合を修正
-yasnippetを使用すると無限ループが起こることがある不具合を修正
-scim-modeの終了時にscim-bridge-socket-alistがクリアされない不具合を修正
-scim-chewingがプリエディットの外にはみ出たアトリビュートを返すために表示が乱れる問題に対応
-scim-skkがアノテーション表示時に間違ったアトリビュートとカーソル位置を返すために表示が乱れる問題に対応
-anything.elを使用するとpost-command-hookが不正にクリアされる問題に対応
-IMコンテクストの作成のリクエスト時に、別のシグナルを受け取るとIDが登録できなくなる不具合を修正
-Alt+変換 のキー入力が認識できない不具合を修正

2010.04.23 version 0.8.0
-debパッケージのビルドのためのファイルを同梱
-複数ディスプレイ環境のサポートを追加
-`read-from-minibuffer&#039;の引数IHERIT-INPUT-METHODを有効化
-入力フォーカスの他フレームへのリダイレクトに対応
-文字入力に対するアンドゥの長さを20文字毎ではなく20カラム毎に変更
-describe-keyの結果に元のキーバインドが反映されるように変更
-auto-complete-modeの曖昧補完のカーソル色を上書きしないように修正
-エラー発生時にscim-modeが安全に終了するように修正
-yasnippetのバージョン0.6のフィールド内での入力が正常にできるように修正
-`query-replace&#039;が開始直後に終了してしまう不具合を修正
-GUIセットアップユーティリティーの使用後、キーマップが無効化されてしまう不具合を修正
-ポイント位置の座標計算部分を再実装

2010.03.02 version 0.7.5
-Emacs23のdaemonモードに対応した
-ansi-term（term.el）に対応した
-undo-tree.elに対応した
-Emacs23.1.92でのバイトコンパイル時に`save-excursion&#039;云々の警告が出ないようにした
-何らかのエラーで`post-command-hook&#039;が解除された場合に、フックを修復するか（あるいはscimモードを抜けるか）を尋ねるようにした
-ウィンドウマネージャから`_NET_ACTIVE_WINDOW&#039;などのプロパティを取得する時に、関数`x-window-property&#039;を使うようにした
-isearch中にヘッダラインやモードラインをマウスでクリックしたときの挙動がSCIM無しの場合と同じになるように修正
-フェイスによって文字の高さが変わると候補ウインドウの位置がずれてしまうのを修正（ただしヘッダライン表示中の動作は従来通り）
-タイムスタンプを1つの整数として保存していたが、その値の大きさが扱える範囲を越えていたため誤動作する恐れがあったのを修正
-Emacsがコンソール上で実行されている時にscim-bridge.elをロードするとエラーが発生する不具合を修正

2009.01.29 version 0.7.4
-table.elのサポートを追加（table-insertコマンドで作成した表内での入力ができるようにした）
-yasnippetの最新版（ver.0.5.9）に対応
-self-insert-commandのエミュレーションを修正（必要以上にアンドゥ境界が除去されないようにした）

2009.01.14 version 0.7.3.3
-ノンインクリメンタル検索および`isearch-edit-string&#039;における文字列編集時のプロンプトに`[SCIM]&#039;と表示されないようにした
-ノンインクリメンタル検索後のエコー領域の表示が一瞬で消えてしまう不具合を修正
-インクリメンタル検索で他のインプットメソッドを使うと頻繁にSCIM-Bridgeからのデータ受信待ちになる不具合を修正
-インクリメンタル検索のカーソル形状に関するオプションが有効の時カーソル形状が元に戻らない場合がある不具合を修正
-ウィンドウマネージャがSawfishだとpost-comman-hookでエラーが発生して使用できない不具合を修正

2009.01.08 version 0.7.3.2
-Emacs22でmake-frameするとエラーが発生する不具合を修正
-バイトコンパイル時にWarningが出ないようにした

2009.01.03 version 0.7.3.1
-kill-bufferしようとすると&quot;Selecting deleted buffer&quot;というエラーが出る事がある不具合を修正
-yasnippetのフィールド内でSCIMを使って入力をするとゴミが残ってしまう不具合を修正

2008.12.28 version 0.7.3
-SCIMが無効化された状態のカーソル色を指定できるようにした
-isearch-mode使用時のカーソル形状を指定できるようにした
-VIエミュレーション系のモード（vi-mode, vip-mode, viper-mode）と連携し、VI状態でSCIMを無効化するようにした
-IRCクライアントのサポートを強化
--プリエディット開始の度にアンドゥリストがクリアされないようにした
--サポートするクライアントを追加（rcirc, Circe）
-親指シフト入力方式の処理を再実装し、誤判定が起こらないようにした
--同時打鍵の判定をEmacs側で自前で行うようにした
--第1ストロークと第2ストロークの間に無駄なプリエディット領域の再描画が発生しないようにした
--同時打鍵時間設定のオプション名を`scim-simultaneous-pressing-time&#039;に変更
-`scim-cursor-type-for-candidates&#039;の仕様を`cursor-type&#039;に合わせて変更した
-新規フレームの作成時やフレームの切替時にカーソル色が変更されない場合がある不具合を修正

2008.12.11 version 0.7.2.2
-プリエディット中にM-x等でミニバッファに移るとバッファにゴミが残ってしまう不具合を修正
-一部のIMEngineでプリエディット中にisearch-modeに入るとバッファにゴミが残ってしまう不具合を修正
-一部のIMEngineでisearch-modeでプリエディット中にC-gで中断すると正常にプリエディットを終了できない不具合を修正

2008.12.09 version 0.7.2.1
-scim-cusor-colorがnilの場合にカーソル色をforeground colorで上書きするようになっていた不具合を修正
-バッファのメジャーモードを変更した際にscim-disable-keymapによるscimの無効化が解除されない不具合を修正

2008.12.06 version 0.7.2
-インクリメンタル検索（isearch-mode）でSCIMを使用できるようにした
-入力フォーカスをチェックする時間間隔を状況に応じて変化させるようにした(画像を表示した場合のチラつきが軽減したかも)
-キーマップの構成を大幅に変更し、必要に応じて4段階で切り替えるようにした。(ユーザー設定は変更不要)
-かな入力方式を使う設定をしない場合に、キーマップに不必要なキーを含めないようにした
-SCIM-Bridgeが異常終了しないようにし、万一終了した場合には自動的に再起動するようにした
-SCIM-Bridgeエージェントとの接続のための埋め込みのPerlスクリプトを廃止した
-escapeやC-c等のキーイベントをSCIMに送るような設定をしても、プレフィックスキーとしてきちんと処理できるようにした
-マウスのドラッグ＆ドロップ操作でファイルを開くとカーソル色が追従できない不具合を修正
-アンドゥが無効のバッファでプリエディットが破壊されるような操作をするとエラーが出て操作不能になる場合がある不具合を修正
-awesomeウインドウマネージャで起動に失敗することがある不具合を修正

2008.10.20 version 0.7.1
-ミニバッファにおいて常にSCIMがオフの状態で入力が開始されるオプションを追加し、デフォルトで有効にした
-GUIセットアップユーティリティーによる設定変更でSCIMがオフになった時にも、カーソル色が追従するようにした
-親指シフト入力時、第2ストロークでマウスイベントを拾ってしまうとエラーになる不具合を修正

2008.10.08 version 0.7.0.1
-説明文字列を中国語に差し替えるためのファイルを追加した（Andy Stewartさんによる翻訳）
-キーバインドの設定で[Alt]+文字キーまたは[Meta]+文字キーの割り付けに失敗する不具合を修正

2008.10.04 version 0.7.0
-SCIMのon/off状態によってカーソルの色を変えられるようにした
-変換候補表示中のカーソルの位置および形状を変えられるようにした
-変数や関数の説明文字列を差し替えるための関数を追加した
-scim-bridge-ja.elを全体的に書き直した
-他言語に翻訳するためのファイルを追加した
-バッファを変更するキー(C-m 等)がSCIM設定で割付けられていないとundoリストが壊れる事がある不具合を修正
-親指シフト入力を使用しているとscim-mode以外で設定された変更フックがうまく発動しない事がある不具合を修正
-Emacs22で関数scim-define-keyにキーイベントがシンボルで与えられると正常に働かない事がある不具合を修正

2008.09.08 version 0.6.9.1
-ミニバッファでSCIMを使った入力ができなくなっていた不具合を修正

2008.09.08 version 0.6.9
-各バッファ別々に入力モードを切り替える設定をデフォルトに変更した
-ebrowseのツリー表示でキーイベントをSCIMに渡さないようにした
-ERC（Emacs用IRCクライアント）で使用できるようにした（つもり）
-Emacs 22で起動時にスプラッシュ画面を表示させるとエラーが発生する不具合を修正
-Emacs 22でプリエディット中にマウスで文字列をペーストするとエラーになる不具合を修正

2008.09.05 version 0.6.8
-&amp;del(){ERC（Emacs用IRCクライアント）で使用できるようにした（つもり）}
-書き込み禁止属性のある文字に書き込もうとした場合に発生するエラーを処理するようにした
-スクロールなどでカーソルが移動した時に、プリエディット領域がカーソル位置へ飛ばされないようにした
-scim-mode起動時にscim-bridgeへの接続が拒否された場合、scim-bridgeを再起動するようにした
-アンドゥ機能が無効になっているバッファで21文字以上の文字列を確定するとエラーになる不具合を修正
-その他いくつかの細かい不具合を修正

2008.07.26 version 0.6.7
-デバッグコードをコメントアウト
-関数scim-mode-on, scim-mode-offをコマンドに変更

2008.06.12 version 0.6.6
-Xmingのマルチウインドウモードで使用できるようにした

2008.06.06 version 0.6.5.1
-scim-modeの起動時にSCIMをトグルする設定ができなくなっていた不具合を修正

2008.06.05 version 0.6.5
-SCIM-Anthyの「テンキーからの入力」設定が有効になるように、カスタマイズ変数のデフォルト値を変更
-Emacsの起動中にフレームのフォーカスを失うとpost-command-hookでエラーが発生する不具合を修正
-一度もEmacsにフォーカスが移らないまま「閉じる」ボタンで終了させると、agentが落ちる不具合を修正
-SCIM-Rubyの履歴ウインドウが正しい位置に表示されるように修正
-scim-bridge-ja.elの関数scim-transfer-romaji-into-preeditを、Set Markで範囲指定できるように変更

2008.06.01 version 0.6.4
-scim-bridge-ja.elに、簡単に領域を選択して再変換するための関数を追加
-scim-bridge-ja.elに、バッファ中のローマ字文字列をかな漢字に変換するための関数を追加
-説明文字列の追加・修正
-説明文字列の日本語への差し替えを、バイトコンパイル済みの関数に対しても行えるように修正

2008.05.28 version 0.6.3.1
-関数scim-enable-keymapとscim-disable-keymapをinteractiveにしていなかったのを修正

2008.05.24 version 0.6.3
-かな入力方式使用時でも「ろ」キーでバックスラッシュが入力できるように変更

-Compiz fusion使用時に候補ウインドウの位置がずれるのを修正
-バイトコンパイルすると説明文字列の日本語への差し替えができなくなるのを修正

2008.05.22 version 0.6.2.1
-scim-modeをoffにする時にxmodmapによるキーマップ変更を元に戻していなかったのを修正

2008.05.22 version 0.6.2
-かな入力方式のためのxmodmapによるキーマップ書き換えを、入力フォーカスを失うと元に戻すように変更
-入力状態切り替えをバッファローカルからグローバルへ変更後に、フォーカスの切り替えに失敗しないように修正
-read-onlyなバッファにおいて、post-command-hookでエラーが出ないように修正

2008.05.20 version 0.6.1
-非GNOME環境でscim-bridgeが起動後にすぐ終了してしまう場合がある不具合を修正
-親指シフト入力の同時打鍵時間のデフォルト値をomelet.elと同じ値(0.1秒)に変更
-説明文字列の日本語訳の追加

2008.05.18 version 0.6.0
-EmacsがAltキーをMetaキーと見なす場合でも、Altキーを含むキーバインドが扱えるようにした
-scim-bridgeが稼働中でない場合には自前で起動するようにした
-ediffモードでの最初の入力がエラーにならないように修正

2008.05.15 version 0.5.0
-初公開

----    </description>
    <dc:date>2010-06-27T03:04:16+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/18.html">
    <title>redo+.el</title>
    <link>http://www11.atwiki.jp/s-irie/pages/18.html</link>
    <description>
      #center(){&amp;sizex(7){redo+.elのぺえじ}}

*これは何？
Emacsで「やり直し」を可能にするredo.elの改良版です。

オリジナルのredo.elからの改良点：
-バッファの内容が壊れるバグを修正した
-アンドゥ時に過去のアンドゥがリドゥされないように設定できる(普通のテキストエディタのような挙動になる)
-メニューバーとツールバーにredoの項目が追加される

GNU Emacs 21, 22, 23およびMeadow 2, 3で動作確認しました。

*ダウンロード

&amp;ref(redo+.el) (version 1.15)

*使い方
redo+.el をEmacsのロードパスの通ったディレクトリに保存し、バイトコンパイルします。

.emacsファイルに以下の内容を追加します。
 (require &#039;redo+)

アンドゥ時に過去のアンドゥがリドゥされないように設定するには
 (setq undo-no-redo t)

Emacs21とMeadow2の場合、これだけではツールバーにアイコンが追加されませんが、アイコンのファイルを自分でインストールすれば大丈夫です。
&amp;ref(redo.xpm)
このファイルを例えば、/usr/share/emacs/21.4/lisp/toolbarに保存します。

*注意
バッファが壊れるバグはできるだけ直してありますが、機能の実装方法(undoの仕組みを利用している)の都合上、大量にアンドゥするとやはり壊れます。これを避けるために、undo-limitを十分大きく設定してください。
 (setq undo-limit 600000)
 (setq undo-strong-limit 900000)
ちなみにデフォルトの値はそれぞれ20000と30000です。


----    </description>
    <dc:date>2010-03-04T04:34:00+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/10.html">
    <title>プラグイン/コメント</title>
    <link>http://www11.atwiki.jp/s-irie/pages/10.html</link>
    <description>
      * コメントプラグイン
@wikiのwikiモードでは
 #comment()
と入力することでコメントフォームを簡単に作成することができます。
詳しくはこちらをご覧ください。
＝＞http://atwiki.jp/guide/17_60_ja.html


-----
たとえば、#comment() と入力すると以下のように表示されます。

#comment    </description>
    <dc:date>2009-06-07T15:42:22+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/14.html">
    <title>scim-modeのスクリーンショット</title>
    <link>http://www11.atwiki.jp/s-irie/pages/14.html</link>
    <description>
      見た目は他のアプリケーションと同じです
#image(Screenshot1.png)

howmと一緒に使ったところ
#image(Screenshot2.png)

viper-modeでも入力できます
#image(Screenshot3.png)

簡体中国語
#image(Screenshot4.png)

タイ語
#image(Screenshot5.png)

手書き認識
#image(Screenshot6.png)

Compiz Fusion使用時
#image(Screenshot7.png)

インクリメンタル検索
#image(Screenshot8.png)    </description>
    <dc:date>2008-12-06T22:32:05+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/20.html">
    <title>grass.el</title>
    <link>http://www11.atwiki.jp/s-irie/pages/20.html</link>
    <description>
      #center(){&amp;sizex(7){grass.elのぺえじ}}

 　　　　_, ._
 　　（　・ω・）　んも〜
 　　○=｛=｝〇,
 　 　|:::::::::＼, &#039;, ´
 ､､､､し ､､､((（.＠）ｗｖｗｗＷＷｗｖｗｗＷｗｗｖｗｗｗｗＷＷＷｗｗＷｗ
 
 ｗＷＷＷＷＷＷｗｗｗｗＷｗｗｖｗＷＷｗＷｗｗｖｗＷＷＷ


*何これｗｗｗｗｗｗｗ
Emacs上で、[[ちょっと草植えときますね型言語Grass&gt;http://www.blue.sky.or.jp/grass/doc_ja.html]]のプログラムを実行や作成するためのプログラムです。
元々は[[ひげぽん氏のgrass.scm&gt;http://d.hatena.ne.jp/higepon/20080605/1212678422]]を参考にして処理系だけ作るつもりだったのが、いつの間にか巨大化ｗｗｗｗ
ラムダ計算の学習にどうぞ。
([[スクリーンショット&gt;grass.elのスクリーンショット]])

GNU Emacs 21, 22, 23用です。たぶん。XEmacsでは動作確認していません。
Meadowでも大丈夫かもしれません。Meadow(牧草地)に草を植えるとかｗｗｗｗｗｗｗ

質問・ツッコミはこちらのページへどうぞ→[[Softwareのぺえじ&gt;Software]]

*特徴ｗｗｗｗｗｗｗ
-Grassのプログラムを実行できます(範囲を選択して実行するとかもできます)
-分かりやすい形式でコードを書いて、それを普通のGrassコードに変換できます(一応、逆変換も可能)
-メジャーモード(grass-mode)とマイナーモード(grass-minor-mode)が使えるようになります
-豊富なサンプルコード付き
-プログラム実行時の日本語出力に対応(シフトJISコードのみ)

*ダウンロードｗｗｗｗｗｗｗ

&amp;ref(grass.el-0.1.8.tar.gz) (2008.09.06 更新)

version 0.1.7 からの変更点
-オプションgrass-allow-consecutive-v-separatorsおよびgrass-conversion-buffer-restorableを追加
-サンプルコードのgrass-sample-hello（Hello, world!）を差し替え
-評価ウインドウや変換ウインドウを開く時に既存のバッファをkillせず内容を消去するように変更
-文字列中からリスト形式のコード先頭を検索するのがうまくいかない事がある不具合を修正
(&amp;link_anchor(changelog){更新履歴はこちら})

*つかいかたｗｗｗｗｗｗｗ
**目次

-&amp;link_anchor(tutorial){チュートリアル}
-&amp;link_anchor(commands){使用できるコマンド}
-&amp;link_anchor(grass-mode){メジャーモードとマイナーモード}
-&amp;link_anchor(sample-codes){サンプルコードの簡単な説明}

**&amp;aname(tutorial,option=nolink){チュートリアル}

***準備

まずEmacsでgrass.elを開き、M-x eval-current-bufferします。

Emacsの起動時にロードしたい場合は、grass.elをEmacsのロードパスの通ったディレクトリに保存し、.emacsファイルに以下の内容を追加しておきます。
 (require &#039;grass)

***サンプルを実行してみる

scratchバッファで
 grass-sample-hello
とタイプし、C-jを押してみてください。Grassのコードが表示されますね(中身は&amp;link_anchor(sample-hello){これ})。

まず、このコードの入った文字列変数を直接実行してみます。
 (grass-eval-string grass-sample-hello)
とタイプしてC-jを押すと、ウインドウが分割されて「Hello, world!」と表示されます。

今度は、マイナーモードを使って実行してみましょう。
「C-c g m」または「M-x grass-minor-mode」とタイプすると、grass-minor-modeがオンになります。grassのコードが色分け表示されるはずです。
カレントバッファにgrass-sample-helloの内容が表示された状態で「C-c g e」または「M-x grass-eval」とタイプすると、先程と同様に「Hello, world」と表示されます。
ただし、バッファ内の他の部分に「w」「W」「v」などの文字があると、それらもGrassのコードとして認識してしまい、うまくいかないかもしれません。
その場合は、実行したい部分を領域選択してから「C-c g e」とタイプしてください。

例えば、このマイナーモードをw3m-modeと一緒に使うと、インターネット上にあるGrassのプログラムを直接実行できます。

w3mの再描画などで文字の色が消えてしまった場合は、「C-c g f」で色付けをやり直して下さい。

***Grassのコードを生成する

先程のgrass-sample-helloの内容が表示された状態のバッファで「C-c g l」または「M-x grass-listify」とタイプすると、grass-sample-helloがリストに変換されたものが表示されます。grass.elがコードを実行する時には、パーサでこのような内部形式のリストに変換してから評価します。人間にとってもこの方が元のGrassコードより理解しやすいと思います。grass.elでは、これを少し拡張した独自形式でコードを記述してから、Grassのコードに変換することができます。

次のファイルをダウンロードして開いてみてください。
&amp;ref(grass-sample-hello.el)
関数、引数、関数適用に名前を付けて参照しているのが分かると思います。Emacs Lispにシンボルとして見なされるような名前を付ける必要があります。既に定義されている名前を再定義した場合、後から定義したものが優先されます。

ここで、「C-c g p」または「M-x grass-plant」とタイプすると、Grassのコードに変換され、他のウインドウに表示されます。この時、バッファはgrass-modeというメジャーモードになり、色分けして表示されます。「C-c g e」で実行できます。

リスト形式のコードを直接実行したい場合は、「C-c g E」または「M-x grass-eval-list」とタイプします。

**&amp;aname(commands,option=nolink){使用できるコマンド}

基本的なコマンドは、grass-eval、grass-eval-list、grass-plant、grass-listifyの4つです。他に、これらのコマンドの変種と、メジャーモードとマイナーモード関連のコマンドがあります。

***grass-eval

Grassプログラムを実行します。カレントバッファが対象になります。インタラクティブな呼び出しで範囲選択している場合は、その範囲のみを評価します。結果は他のウインドウに表示します。ウインドウがなければ、フレームを分割して表示します。

grass-evalには以下の派生コマンドがあります。
-grass-eval-string string : 文字列を評価します
-grass-eval-region beg end : 指定範囲を評価します
-grass-eval-buffer buffer : バッファを評価します

また、これらの出力を文字列として返す関数もあります。
-grass-eval-string-to-string string
-grass-eval-region-to-string beg end
-grass-eval-buffer-to-string buffer

***grass-eval-list

リスト形式のGrassのプログラムを実行します。Emacs Lispのリストの形で記述するものです。カレントバッファが対象になります。インタラクティブな呼び出しで範囲選択している場合は、その範囲のみを評価します。結果は他のウインドウに表示します。ウインドウがなければ、フレームを分割して表示します。

grass-eval-listには以下の派生コマンドがあります。
-grass-eval-list-string string : 文字列を評価します
-grass-eval-list-in-region beg end : 指定範囲を評価します
-grass-eval-list-in-buffer buffer : バッファを評価します
-grass-eval-code list : リストを評価します

また、これらの出力を文字列として返す関数もあります。
-grass-eval-list-string-to-string string
-grass-eval-list-in-region-to-string beg end
-grass-eval-list-in-buffer-to-string buffer
-grass-eval-code-to-string list

***grass-plant

リスト形式で記述したプログラムから標準のGrassプログラムを生成します。カレントバッファが対象になります。インタラクティブな呼び出しで範囲選択している場合は、その範囲のみを変換します。結果は他のウインドウに表示します。ウインドウがなければ、フレームを分割して表示します。

grass-plantには以下の派生コマンドがあります。
-grass-plant-string string : 文字列を変換します
-grass-plant-region beg end : 指定範囲を変換します


-grass-plant-buffer buffer : バッファを変換します
-grass-plant-code list : リストを変換します

また、これらの出力を文字列として返す関数もあります。
-grass-plant-string-to-string string
-grass-plant-region-to-string beg end
-grass-plant-buffer-to-string buffer
-grass-plant-code-to-string list

***grass-listify

grass-plantの逆変換、つまりGrassプログラムからリスト形式のプログラムに変換します。カレントバッファが対象になります。インタラクティブな呼び出しで範囲選択している場合は、その範囲のみを変換します。結果は他のウインドウに表示します。ウインドウがなければ、フレームを分割して表示します。

grass-listifyには以下の派生コマンドがあります。
-grass-listify-string string : 文字列を変換します
-grass-listify-region beg end : 指定範囲を変換します
-grass-listify-buffer buffer : バッファを変換します

また、これらの出力を文字列として返す関数もあります。
-grass-listify-string-to-string string
-grass-listify-region-to-string beg end
-grass-listify-buffer-to-string buffer

**&amp;aname(grass-mode,option=nolink){メジャーモードとマイナーモード}

たいした機能はありませんが、メジャーモードとマイナーモードを作ってみました。
「M-x grass-mode」でメジャーモードを開始、「C-c g m」または「M-x grass-minor-mode」でマイナーモードをトグルできます。

できることは
-Grassのコードに使われる文字(w, ｗ, W, Ｗ, v, ｖ)に色を付けて表示
-以下のキーバインドを追加する
--C-c g e : grass-eval
--C-c g E : grass-eval-list
--C-c g p : grass-plant
--C-c g l : grass-listify
--C-c g f : font-lock-fontify-buffer
-メジャーモードはウインドウ分割時でも常に長い行を折り返して表示
以上です。

なお、emacs-lisp-modeとlisp-interaction-modeには、grass.elを評価またはロードした時点でこのキーバインドが設定されます。

**&amp;aname(sample-codes,option=nolink){サンプルコードの簡単な説明}

grass.elをロードすると、以下の変数にサンプルコードが格納された状態になります。これらのうちのいくつかは、[[youz氏のコード&gt;http://d.hatena.ne.jp/youz/searchdiary?word=Grass]]を参考に書き直したものです。詳細はgrass.elのコードを見て下さい(720行目あたりからです)。

***grass-sample-w

 ｗＷＷｗｗｗｗ

「w」を1個出力します。

***grass-sample-w16

 wwWWwWWWwvwWWwwWwwwWwwwwwWwwwwwwww

チャーチ数で2^2=4、2^4=16を計算し、「w」を16個出力します。

***grass-sample-ascii

 wWWwWWWWwvwwWWwWWWwvwwwWWWwwWwwWWWWwvwWWwwwWWWwWWWWWwwWwwwwwWwwwWWWWWWWWwWWWWww
 wWwwwWWWWWWWWWWwWWWWwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwWww

ASCII印字可能文字をコード順に出力します。

***grass-sample-inputw

 wWWWwwwwWWWWWWwWwwwwwwWwwwwwwwWwwwwWWWWWWWw

1文字入力し、その文字が「w」なら「w」を出力し、「w」以外ならば「x」を出力します。

***grass-sample-echo

 wwWWwWWWwvwWWwwWwwwwwWwwwwwwwWWwWWWWWWWWWWwWwwWwWwwwwwwwwwwWwwwwWWWwwwwwwwwwwWw
 wwwwwwwwww

入力された文字をそのまま出力します。C-dまたはbackspaceで終了します。

***&amp;aname(sample-hello,option=nolink){grass-sample-hello}

 wWwwwWwwwwwWWWWwvwvwwWWWWwWWWWwwwvwwWWwwWwwvwwWWWwWWWwvwWWwWwvwWWwwwwwWwwvwwWWw
 WWWwvWwvwwwWWWwwWwwWWWWwvWwwwWWWWwWWWWwwwWwwWWWWWwWWWWWWwvwwWWwWWWwvWwwWWwwwwWW
 WwwwwwwWWWWWWWWWWwwwwwwwwWwwWWwwwwWWWwwwwwwvwwwWWWwwWwwWWWWwvWwwwwwwWWwwwwWWWww
 wwWWWWwWWWWWWWWWWWWWWWWWWWwwwwwWwwWWwWWWwWWWWwvwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWww
 wwwwwwwWwwwwwwwwwWwwwwwwWwwwwwwwWwwwwwwwWwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwww
 wwwwvwwvWWwWwwWwwwwwwWwwwwwwWwwwwwwwwwWwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwvw

「Hello, world!」と出力します。コードを短くするために、いろいろ細工をしています。Yコンビネータを使ってみたりｗｗｗｗ。&amp;del(){ちなみに長さは551文字です。}version 0.1.8で、もう少し縮めて472文字にしました。

***grass-sample-factorial

 wwWWwwWwwvwwWWWwWWWwvwWWwWwvwvwwWWWwwvwwvwWWWwwWWwWwwwwwvwwwWWwwwWWwvwwwWWWWwwW
 WWWWWWWwwWWWWWwwWwwWwwwwwwwwwwwwvwwwWWwWWWWwvwwWWwvwwWWWWWwWWWWWWWWwWwwwwwWWwWw
 wwwwwWwwwwwWWWWWWWWWWwwwwwwwWwwvwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwvwWWWWWWWWWW
 WWwwwWwwwWwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwww

6の階乗、6!=720を再帰的に計算し、「w」を720個出力します。再帰のためにYコンビネータを使っています。

Yコンビネータは値渡し評価(call-by-value evaluation)で使用できる次の式を使います。
 Y := λ f. (λ x. f (λ y. x x y)) (λ x. f (λ y. x x y))

階乗の関数を返す関数gは、一般的な式
 g := λ f n . (ISZERO n) 1 (MULT n (f (PRED n)))
を使うと、「f (PRED n)」の部分を先に評価しようとして無限ループしてしまうので、
 g := λ f n. MULT n (((ISZERO (PRED n)) (TRUE 1) f) (PRED n))
と定義しています。

このYとgを用いて
 (Y g) n
を評価すればnの階乗が計算できます。

***grass-sample-fibonacci

 wwWWwwWwwvwwWWWwWWWwvwWWwWwvwvwwWWWwwvwwvwWWWwwWWwWwwwwwvwwwWWwwwWWwvwwwWWWWwwW
 WWWWWWWwwWWWWWwwWwwWwwwwwwwwwwwwvwwwWWWwwWwwWWWWwvwwWWwvwwWWWWWwWWWWWWwWWWWWWWW
 WwWwwwwwwWWwwwwwwwwwwwwWWWwwWWWWwwWWwwwwwwwwwWWwwwwwwwwwwWWwwwwwwwwwWWwwwwwwwww
 WWwwwwwwwwwwwwwwwWwwvwWWWWwwwWwWwwwwwwWwwWWwWWWWWWWWWWWWWWWWwwwwwwwWwwWwwwwwwww
 wwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwww

フィボナッチ数の12番目、144を再帰的に計算し、「w」を144個出力します。再帰のためにYコンビネータを使っています。

この計算も階乗と同様、無限ループしないように考慮した式
 g := λ f n. (((ISZERO (2 PRED n)) (TRUE 1) f) (PRED n)) SUCC
                                   (((ISZERO (2 PRED n)) (TRUE 0) f) (2 PRED n))
で計算します。

***grass-sample-fibonacci-iterative

 wwWWwwWwwvwwWWWwWWWwvwWWwWwvwvwwWWWwwvwwvwWWWwwWWwWwwwwwvwwwWWwwwWWwvwwwWWWWwwW
 WWWWWWWwwWWWWWwwWwwWwwwwwwwwwwwwvwwwWWWwwWwwWWWWwvwwWWwvwWWWwwWwWWWWWwwWwwwwwwW
 wwwWWWWWwWwwwwwwwwwwwwwwwwwwwwWWWWWwWwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWwwwwwwwww
 wwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWwwwvwwwwWWWWWwwW
 WWWwwwwwwwwWwwwwWWWWWWWWWWWwwwwWWWWWWWWWWWWWWwWwWwwwwwwwwwwWwwwwwwwwwWwwwwwwWww
 wwwwvwWWWWWwwwwWwWwwwwwwwWwwWWwWWWWWWWWWWWWWWWWWwwwwwwwWwwwwwwwwwwwwwwwWwwwwwww
 wwwwWwwww

フィボナッチ数を先頭から12番目までを順に計算し、「w」を棒グラフのように出力します。ループのためにYコンビネータを使っています。

***grass-sample-infinity

 無限に草植えときますねｗＷＷｗｗｗｗＷＷｗｗ

Grassの公式サンプルです。無限に「w」を出力し続けます。放置するとEmacsがクラッシュするかもしれないので、C-gで止めて下さいｗ


*&amp;aname(changelog,option=nolink){更新履歴}

2008.09.06 version 0.1.8
-オプションgrass-allow-consecutive-v-separatorsおよびgrass-conversion-buffer-restorableを追加
-サンプルコードのgrass-sample-hello（Hello, world!）を差し替え
-評価ウインドウや変換ウインドウを開く時に既存のバッファをkillせず内容を消去するように変更
-文字列中からリスト形式のコード先頭を検索するのがうまくいかない事がある不具合を修正

2008.09.01 version 0.1.7
-関数適用が関数定義の中にしか書けなかったバグを修正

2008.08.03 version 0.1.6
-OutプリミティブでCRをLFに変換していたのを、Inプリミティブで変換するように変更
-マイナーモード変数をバッファローカルにしていなかったバグを修正

2008.08.02 version 0.1.5
-grass-plantやgrass-eval-listでコードの先頭位置を探す時、初めの空行とコメント行を無視するようにした

2008.07.27 version 0.1.4
-emacs-lisp-modeのキーマップを上書きせずgrass-mode-mapを使うように変更

2008.07.25 version 0.1.3
-色付けをやり直すキーバインドを追加
-Emacs21, 22の文字出力で、不正なシフトJISコードの時にエラーで止まらないように修正

2008.07.24 version 0.1.2
-Emacs21, 22でシフトJISコードの文字出力ができなかったのを修正

2008.07.24 version 0.1.1
-OutプリミティブをシフトJISコードの文字出力に対応
-リスト形式のコードの構文チェックを修正

2008.07.23 version 0.1.0
-初公開

----    </description>
    <dc:date>2008-09-06T22:00:45+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/1.html">
    <title>トップページ</title>
    <link>http://www11.atwiki.jp/s-irie/pages/1.html</link>
    <description>
      **irie @ ウィキ へようこそ
このページはirieの備忘録兼ファイル置き場です。
まだあまり内容はありません。

*CONTENTS
-Science &amp; Technology
-Computer
--[[Linux Tips]] 役に立つかも知れない情報
--[[Software]] フリーソフトウェア置き場

*更新履歴
#recent(8)

----    </description>
    <dc:date>2008-07-26T13:27:12+09:00</dc:date>
  </item>
    <item rdf:about="http://www11.atwiki.jp/s-irie/pages/2.html">
    <title>メニュー</title>
    <link>http://www11.atwiki.jp/s-irie/pages/2.html</link>
    <description>
      &amp;google()
**メニュー
-[[トップページ]]
-Science &amp; Technology
-Computer
--[[Linux Tips]]
--[[Software]]

----

**リンク
-[[@wiki&gt;&gt;http://atwiki.jp]]
-[[@wikiご利用ガイド&gt;&gt;http://atwiki.jp/guide/]]

----

**更新履歴
#recent(8)

----

#center(){YESTERDAY: &amp;counter(yesterday)}
#center(){TODAY: &amp;counter(today)}
#center(){TOTAL: &amp;counter()}

&amp;link_editmenu(text=ここを編集)    </description>
    <dc:date>2008-07-26T13:23:21+09:00</dc:date>
  </item>
  </rdf:RDF>

