簡體   English   中英

如何使用文件局部變量設置Emacs緩沖區名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM