■掲示板に戻る■
1-
101-
201-
301-
401-
501-
601-
701-
801-
901-
1001-
最新50
レス数が1000を超えています。残念ながら全部は表示しません。
SKK専用スレッド
603 :
580
:01/12/21 12:22
なんか、シンボル名と実際の動作があまり違うのは
いかんよなぁ、とか、"," は skk-current-touten を
呼ぶべきだよなぁとか考えてたら膨らんでしまいました。(^^;;;
(defvar my-skk-dynamic-insert-rule-list
'(("." ("." . skk-current-kuten))
("," ("," . skk-current-touten))
("-" ("-" . "ー")))
"*状況に応じて動的に切り替えるルール。
car が入力された時、現在のカーソルの直前の文字が `my-skk-dynamic-insert-regexp-alist'
にマッチすれば左側が、マッチしなければ右側がバッファに挿入される。")
;; caadr とか書くのはアレなので、適当な docstring です。
;(setq my-skk-dynamic-insert-rule-list
; '(("." ("." . skk-current-kuten))
; ("," ("," . skk-current-touten))
; ("-" ("-" . "ー"))))
;; なんて事も(あんま意味無いけど)出来ます。
(defvar my-skk-dynamic-insert-regexp-alist
'(("." . "[0-9-,.]")
("," . "[0-9-,.]")
("-" . "[0-9-,.]"))
"*`my-skk-dynamic-insert-rule-list' を用いて動的に切り替える条件の正規表現。
car が入力された時、現在のカーソルの直前の文字が cdr にマッチすれば
`my-skk-dynamic-insert-rule-list' での左側が、マッチしなければ
右側がバッファに挿入される。")
(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(regexp (cdr (assoc "," my-skk-dynamic-insert-regexp-alist)))
(alist (car (cdr (assoc c my-skk-dynamic-insert-rule-list)))))
(while (> num 0)
(skk-insert-str (cond ((bobp)
(my-skk-func-to-str (cdr alist)))
((string-match regexp
(char-to-string (char-before)))
(my-skk-func-to-str (car alist)))
(t
(my-skk-func-to-str (cdr alist)))))
(setq num (1- num)))))
;; こんなの書かずとも SKK 側に適当な関数がありそうだが分からんかった
(defun my-skk-func-to-str (arg)
(if (char-or-string-p arg)
arg
(funcall arg nil)))
(setq skk-rom-kana-rule-list
(append skk-rom-kana-rule-list
(mapcar (lambda (l)
(list (car l) nil 'my-skk-dynamic-insert))
my-skk-dynamic-insert-rule-list)))
次100
最新50
read.cgi ver5.26+ (01/10/21-)