kiwanami/emacs-widget-mvc — pull request #4 by aki2o (2014-12-21 00:57:59+00:00)
Title: guard other variables from the effect of setf

alistの内容を`setf`で変更すると、引数で渡した側の変数の内容も変更されてしまいます。
例えば、以下のようになってしまうので、
現状だと、`wmvc:build-buffer`に渡す変数を`copy-alist`などで守る必要が出てきます。

```lisp
(let* ((attrs '((hoge . "aaaa")
(fuga . "bbbb")))
(ctx (make-wmvc:context :attributes attrs))
testv)
(setq testv attrs)
(wmvc:context-attr-set ctx 'fuga "cccc")
attrs ; => ((hoge . "aaaa") (fuga . "cccc"))
testv ; => ((hoge . "aaaa") (fuga . "cccc"))
(wmvc:context-attributes ctx)) ; => ((hoge . "aaaa") (fuga . "cccc"))
```

仮に、この挙動を把握して実装されていたとしても、
(elispに対しての理解が浅い)ユーザ側に対して優しくない設計だと思うので、
`setf`による変更が外部に波及しないようにしました。

`wmvc:context-attr-set`で、`copy-alist`を使っていないのは、その方が
論理的に処理に沿っているし、メモリ消費的にも良いのではと思ったので。