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



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

SKK専用スレッド

620 :580 :01/12/23 23:19
妄想を実装してみた。

(defun my-skk-dynamic-insert (arg)
(let* ((str (char-to-string last-command-char))
(alist (nth 1 (assoc str my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(car l))
alist))
(default-data (cdr (assq t alist)))
(idx 0)
(data (cond
;; my-skk-dynamic-insert-rule-list を後から修正して
;; 対応するエントリが無くなった場合の fail safe
((null alist)
str)
((bobp)
default-data)
(t
(while (not (save-match-data
(save-excursion
(let ((regexp (nth idx regexp-list))
pos)
(when (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(backward-char))
(setq pos (point))
(or (eq regexp t)
(and (re-search-backward regexp nil t)
(string= (buffer-substring-no-properties (point) pos)
(buffer-substring-no-properties (match-beginning 0)
(match-end 0)))))))))
(setq idx (1+ idx)))
(cdr (nth idx alist))))))
(if (functionp data)
(funcall data arg)
data)))

使用例:

(setq my-skk-dynamic-insert-rule-list
'(("."
(("[-0-9,.\n]" . ".")
("[−0-9,.]" . ".")
(t . skk-current-kuten)))
(","
(("[-0-9,.\n]" . ",")
("[−0-9,.]" . ",")
(t . skk-current-touten)))
("-"
(("[-0-9,.\n]" . "-")
("[−0-9,.]" . "−")
(t . "ー")))
("@"
(("今日は" . skk-today)
(t . "@")))))


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

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