如何在另一个缓冲区中处理缓冲区局部变量?我以为我可以用let绑定它,但是在将变量传递给另一个使用symbol-value
的函数时遇到了麻烦。这是一个小例子,
(defvar-local local-var nil)
(setq local-var "a")
(defun fun ()
(let ((local-var local-var))
(with-temp-buffer
(format-fun 'local-var)
(message (buffer-string)))))
(defun format-fun (name)
(insert (symbol-value name)))
如何在local-var
中绑定fun
,以便format-fun
可以在另一个缓冲区中处理它?</ p>
答案 0 :(得分:3)
有一个 elisp 函数可以从另一个缓冲区获取缓冲区本地变量值:
(buffer-local-value 'var (get-buffer "your-buffer-name"))
答案 1 :(得分:2)
将变量绑定到let
并不会阻止它在切换缓冲区时被重新分配。
使用其他变量来避免这种情况。
(defun fun ()
(let ((new-var local-var))
(with-temp-buffer
(format-fun 'new-var)
(message (buffer-string)))))