■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50



レス数が1000を超えています。残念ながら全部は表示しません。

SKK専用スレッド

639 :名無しさん@お腹いっぱい。 :01/12/26 13:25
とても面白そうだったのでコード拡張(?)してみました。
ちなみに looking-at を加えて lambda 対応は省きました。
# これってどういうメリットがあったんでしょうか?
# よく分らなかったのと、変数でも関数でもあるシンボル
# への対応が面倒だったので無くしちゃいました。

my-skk-dynamic-insert-rule-list の形式も変えてみました。
'((INPUT-STATE NEXT-STATE
(;; looking-at が nil なら re-search-backward()
;; (- (point) limit) を re-search-backward の
;; LIMIT に渡す
(REGEXP looking-at ignore-lf limit S-EXP . VAL)
;; looking-at が non-nil なら looking-at()
;; b-regexp が指定されていれば、その条件で
;; re-search-backward してから looking-at する
;; limit は re-search-backward の際に使われる
(REGEXP looking-at b-regexp limit S-EXP . VAL)
;; 上以外
(S-EXP . VAL))))

looking-at, ignore-lf, limit, S-EXP は不要であれば
書かずにすみます。つまり
(REGEXP looking-at ignore-lf limit . VAL)
(REGEXP looking-at ignore-lf . VAL)
(REGEXP looking-at . VAL)
(REGEXP . VAL)
これら全て ok です。指定されてなければ nil として扱います。
# 一番下の形式だと re-search-backward となります。
ignore-lf が明示的に指定された時には、
my-skk-dynamic-insert-ignore-CRLF を上書きします。

VAL は 文字列 or 関数のシンボル(arg付きで呼ばれる) or 変数 etc.
>>616 とは変えて、nil だと S-EXP の評価値になるようにしました。
looking-at の際に re-search-backward できるのは、こっちのほうが
context を考慮しやすいだろうと判断したからです。
# skip-chars-backward と迷ったのですが、こっちのほうが
# 柔軟に対処できそうなので。あまりオプション増すと
# 大変なので、これ以上の事がしたければ REGEXP でなく
# S-EXP のほうで対処してもらうという事で。


掲示板に戻る 全部 前100 次100 最新50

read.cgi ver5.26+ (01/10/21-)