個人的に作成した Lynx にまつわる patch 類
このページは僕が個人的に作成した lynx 関係の patch をまと
めています。利用に際しては条件を確認して下さい。
(といっても全く制限がないに等しい条件ですが。)
動作は
- SunOS 4.1.3
- lynx-2.* with slang
という環境で確認しています。もし他の環境でうまくいったと
いう方がいたら連絡していただければ幸いです。
- BACKGROUND 属性へのリンクを作成するための patch
- image_links が有効になっているときに BODY タグの BACKGROUND 属性で
指定されているイメージがあれば [BACKGROUND] という ALT を表示して指定
されているイメージへのリンクを作成します。一応,Lynx2-6 +
composite-patch へのパッチになっていますが,多分 Lynx2-6 でも
大丈夫だと思います。
- 追記:Lynx
の source をみて一番最初に作った patch なのですが,
本質的に機能の改善には全く役に立っていません (^_^;)
大体の場合,BGIMAGE 属性で指定する画像はそれ自体が意味を持つ
ものはほとんどないと言っていいからです。この patch は
ある種の冗談だと思っていただければ幸いです :-)
- slang-0.99.38 に対する patch
- slang-0.99.38 では漢字(正確には1バイト目が0x80以上の文字)に対する処
理が加えられており,sl-feat.h で
#define SLANG_HAS_KANJI_SUPPORT 1
とすることで選択できます(0 にしておいても通常の表示では問題
はありませんが,popup 内でスクロールする場合に表示がおかしく
なります)。
しかし,このままだと popup によるオプション選択で表示が乱れ
るのでそれを修正するためのパッチです。slang では box の線を
引くときにその部分に ALT_CHAR フラグをたてています。これを利
用した判定にしているので,SJIS でもかなりきれいに表示されま
す。(97/8/23 修正)
- 漢字コードを SJIS で利用する場合,もとのままだと2バイト
文字の入力がうまくいきません。
slgetkey.c のなかで 0x81-0x9F に相当するコード
を強制的に変換しているためです。SLANG_HAS_KANJI_SUPPORT が 1
のときはこの操作を行なわないように変更しました。
(97/9/10 追記)
追記:
slang0.99.38jp7.pat.gzをあてた slang でも EUC の表示は
正しくなります。他の slang アプリケーションを利用する人はこ
ちらを使った方がよいでしょう。ただし,SJIS
では表示が変になります。(97/8/22記)
- LYCharUtils.c に 対する patch
- title タグに日本語(多分中国語や韓国語でも)が含まれていると '=' で
リンクの情報を表示したりブックマークへ文書を登録するときに文字化けを起
こす場合があります。これは LYEntify という関数がこれらの文字についての
処理をサボっているせいです。この patch では LYEntify で2バイト文字に対
する処理を追加しています。
- 追記:(言い訳ともいう ^_^;)JIS などのチェックに関してはあ
さださんのコードをもとにした Lynx のコードをもとにしています。EUC や
SJIS などは1バイト目が 0x80 から 0xff までに入っていたら強制的に2バイ
ト読み飛ばすという邪悪な(^_^;;)処理を行なっています。(97/2/3
記)
- 追記その2:(この言い訳はどこまで続くのか...)
コード判定を置き換えの時点のみにし,EUC や SJIS などの判定に
HTCJK.h のルーチンを用いるようにしました。また,
patch 自体も2-7-1に対するものにしました。このパッチは2-6および2-7
に対しても適用できることを確認しています。(97/4/30記)
- bookmark ファイルまわりの patch
lynx2-6用(97/4/30)
lynx2-7-1用(97/4/30)
(lynx2-7 に対しても適用できることを確認しています)
- 表示言語に日本語が選択されている場合にブックマークファイルへ内容を
JIS コードで出力するためのものです。このパッチには上の
LYCharUtils.c への patch が含まれています。
- 追記:LYCharUtils.c の patch に対する変更をこちら
にも反映しました。(97/4/30記)
- 追記その2:最近の development code や FOTEMODS
のコードでは bookmark file を作成するときに
charset を示す META タグをヘッダにいれています。これをこのま
まにしておくとおかしいので Display Character Set が JAPANESE
のときは常に charset=iso-2022-jp とするような修正を施す予定
です。ちなみに FOTEMODS(8/17) に対する patch ではちゃんと修正していま
す。
(97/8/18記)
- FOTEMODS(8/17) に対する patch(97/8/18)
- 今までの bookmark まわりの patch
に加えて以下の問題点を修正するものです。
- FORM の表示がおかしくなる
もともとの文書のコードと Lynx の Display Character Set が異
なる場合に SUBMIT ボタンの表示や POPUP 表示にした場合の
SELECT フィールドの表示がおかしくなる。
- SJIS の文書の扱い
JISX0201 カナが含まれている場合に表示がおかしくなったり,
タグを正しく parse しなかったりする。(本来はこんなことをやる
べきではないのかもしれない)
何をやっているかはコードを見て下さい (説明するのが面倒なため
^_^;)。オリジナルの 2-7-1 と最近の fotemods および
development version では,コードそのものがかなり変更されてい
るため,以前の version に対してこの patch は適用できません。
(実際にオリジナルの 2-7-1 のコードにあてようとしたら
途中でこけました ;_;)
- 履歴および訪問リンクに関する patch
- 履歴ページおよび訪問リンクページの表示がおかしくなるのを
修正したものです。どうも日本語まわりではコード変換をちゃんと
行なっていないために起こる問題が多いような。
- ac-0.57 に対する patch
- FOTEMODS patch を development
version の ac-0.57 に対して適用したものです。そのままだとちょっ
とおかしかったので修正しました。
- 追記:これもずいぶん古くなってしまいまし
た。development version は短期間でずいぶん変更されることがあ
るので後を追いかけるのは大変です。
- 簡易エディタで2バイト文字を正しく扱うための patch
- '97/8 版(LYStrings.c, LYForms.c について変更)
- '98/3 版(LYStrings.c, LYStrings.h について変更)
- Lynx のエディタは2バイト文字を扱うことを考慮していません。
そのため FORM で日本語を入力しようとするとうまくいかないこと
があります。このパッチでは
- カーソルの移動
- ワード単位の移動
(ワードは連続した英数字または連続した2バイト文字)
- 文字の削除
を2バイト文字についても正しく行なえるようにします。パッチを
あてた後,Makefile の SITE_DEFS に -DSUPPORT_MULTIBYTE_EDIT
を加えてコンパイルして下さい。加えない場合はもとの簡易エディ
タの動作になります。
- 注意:一般に,8 bit through の curses が
multibyte character を正しく扱うことは保証できないため,
操作のたびに強制的に画面の再描画を行なわせています。そのため,
通常は画面がちらつくようになっています。
multibyte charcter を正しく扱える curses を使う場合は
SITE_DEFS に -DUSE_MULTIBYTE_CURSES
を加えると画面の再描画を行なわないコードになります。
また,slang を利用する場合は
sl-feat.h で SLANG_HAS_KANJI_SUPPORT を1にしてコンパイルした
slang を利用して下さい(それ以外想定していない ^_^;)。
- 追記:僕が FORM
への漢字入力が正常に行なえるのを確認しているのは
- lynx-2.7.1ac-0.* with slang
- kterm 上で lynx を起動し,kinput2 により入力
という環境のみです。その他で「漢字入力ができたよ」という方が
いたら連絡して下さい(97/9/25)。
- 追記2:最初に作ったものは LYStirngs.c と
LYForms.c に対して修正を施したものでした。これは2箇所にほ
とんど同じ修正を施すものだったので少しバカバカしくなって修正
箇所を変更したものを作りました。個人的にはずいぶん前から使っ
ていますが特に不都合は無いようです(98/3/19)。
- BACKGROUND 属性へのリンクを作成するための patch
- 2-6の BACKGROUND 属性へのリンク作成 patch を 2-7-1 に対
応するようにしたものです。冗談 patch その2です :-)
- TEXTAREA の改行を CR LF で出力するための patch
- Lynx は TEXTAREA の改行を LF (%0a) で出力します。しかし,
RFC1866 を参照すると
character. Line breaks, as in multi-line text field values,
are represented as CR LF pairs, i.e. `%0D%0A'.
とあります。このままではおかしいため,修正するための patch
を作りました。といっても直しているのは GridText.c の2箇所だ
けです :-)