「git add -p」のコード スニペットを書き始めました。
(add-hook
'diff-mode-hook
(lambda()
(mapc (lambda(k)
(lexical-let ((kk k))
(define-key diff-mode-map k
(lambda()(interactive)
(if (region-active-p)
(replace-regexp "^." kk
nil
(region-beginning)
(region-end))
(insert kk)))))) (list " " "-" "+"))))
それは私が望むように機能します。私を悩ませているのは、「レキシカルレット」の醜さだけです。ネストされたラムダは変数 'k. このコードを記述するより良い方法はありますか? 私は、私が書くことを可能にするいくつかの魔法の関数「lexic-lambda」を好むでしょう:
(add-hook
'diff-mode-hook
(lambda()
(mapc (lexical-lambda(k)
(define-key diff-mode-map k
(lexical-lambda()(interactive)
(if (region-active-p)
(replace-regexp "^." k
nil
(region-beginning)
(region-end))
(insert k)))))) (list " " "-" "+")))