在另一个缓冲区中使用缓冲区局部变量的值

Use value of buffer-local variable in another buffer

如何在另一个缓冲区中处理一个缓冲区局部变量?我以为我可以用 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)))

如何在 fun 中绑定 local-var 以便 format-fun 可以在另一个缓冲区中处理它?

let 绑定变量不会阻止它在切换缓冲区时被重新分配。

使用不同的变量来避免这种情况。

(defun fun ()
  (let ((new-var local-var))
    (with-temp-buffer
      (format-fun 'new-var)
      (message (buffer-string)))))

有一个 elisp 函数可以从另一个缓冲区获取 buffer-local 变量值:

(buffer-local-value 'var (get-buffer  "your-buffer-name"))