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



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

SKK専用スレッド

616 :580 :01/12/22 02:09
(defvar my-skk-dynamic-insert-ignore-CRLF t
;; Emacs の内部では CRLF でも '\n' だけど。
;; あと、無視する改行の数は1つだけです。(これが挙動として自然だと思う。
"*`my-skk-dynamic-insert' でカーソルが行頭にある時、改行を無視して前の文字を参照するか。")

(defun my-skk-dynamic-insert (&optional arg)
(interactive "*p")
(let* ((num (if arg (car arg) 1))
(c (char-to-string last-command-char))
(alist (nth 1 (assoc c my-skk-dynamic-insert-rule-list)))
(regexp-list (mapcar (lambda (l)
(if (eq (car l) t)
".\\|\n"
(car l)))
alist))
(default-str (cdr (assq t alist)))
str)
(setq str (if (bobp)
(my-skk-func-to-str default-str)
(let ((c-b (char-to-string (char-before
(if (and (bolp)
my-skk-dynamic-insert-ignore-CRLF)
(1- (point))
(point)))))
(idx 0))
(while (not (string-match (nth idx regexp-list)
c-b))
(setq idx (1+ idx)))
(my-skk-func-to-str (cdr (nth idx alist))))))
(while (> num 0)
(skk-insert-str str)
(setq num (1- num)))))


(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)))

長々と(汚いコードを)何度も申し分けない >all


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

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