[英]How do I set an Emacs buffer name with a file local variable?
我希望我的emacs緩沖區具有與文件名不同的名稱。 我不是每次都手動設置,而是希望根據文件內容自動執行此操作,例如:
//局部變量:
// buffer-name:MyName
// 結束:
但這不起作用,因為buffer-name是一個函數,而不是一個變量。 我怎樣才能做到這一點?
你可以說:
// Local Variables:
// eval: (rename-buffer "my-buffer-name-here")
// end:
這是一個技巧。
否則,您可以在.emacs
一個find-file-hook
掛鈎,它將緩沖區重命名為特定的局部變量內容。 就像是:
(defvar pdp-buffer-name nil)
(defun pdp-rename-buffer-if-necessary ()
"Rename the current buffer according to the value of variable"
(interactive)
(if (and pdp-buffer-name (stringp pdp-buffer-name))
(rename-buffer pdp-buffer-name)))
(add-hook 'find-file-hook 'pdp-rename-buffer-if-necessary)
然后在您的特定文件中
// Local Variables:
// pdp-buffer-name: "pierre"
// end:
擁有更多的腦力,你可以有一個更好的解決方案。
請注意,您的需求可能已存在擴展。 查看Emacs維基 。
謝謝皮埃爾。 您的pdp-buffer-name elisp示例運行良好。
我做了一個增強,因為我注意到emacs將局部變量視為“不安全”,即始終提示詢問是否應該應用該值。 由於我希望這可以使用許多不同的值而不會使我的.emacs與“安全”值列表混淆,我添加了一條建議。 使用上一個示例的命名法,它看起來像這樣:
;; allow all values for "pdp-buffer-name"
(defadvice safe-local-variable-p (after allow-pdp-buffer-name (sym val) activate)
(if (eq sym 'pdp-buffer-name)
(setq ad-return-value t))
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.