¿Cómo configuro un nombre de buffer de Emacs con una variable local de archivo?

votos
9

Quiero que mi buffer emacs tenga un nombre diferente al nombre del archivo. En lugar de configurarlo todo el tiempo, quiero que esto suceda automáticamente en función del contenido del archivo, algo así como:

// Variables locales:
// buffer-name: MyName
// End:

Pero esto no funciona porque buffer-name es una función, no una variable. ¿Cómo puedo hacer esto?

Publicado el 09/12/2008 a las 16:57
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
12

Tu puedes decir:

// Local Variables:
// eval: (rename-buffer "my-buffer-name-here")
// end:

Es un truco sin embargo.

De lo contrario, podría programar un find-file-hookgancho en el .emacsque cambie el nombre del búfer a un contenido de variable local específico. Algo como:

(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)

Luego en tu archivo específico tienes

// Local Variables:
// pdp-buffer-name: "pierre" 
// end:

Con más poder mental, podrías tener una solución más agradable.

Tenga en cuenta que ya podría existir una extensión para su necesidad. Mira en la wiki de Emacs .

Respondida el 09/12/2008 a las 17:30
fuente por usuario

votos
3

Gracias Pierre. Tu ejemplo pdp-buffer-name elisp funcionó muy bien.

Hice una mejora porque noté que emacs estaba tratando la variable local como "insegura", es decir, siempre preguntaba si el valor debería aplicarse. Como quiero que esto funcione con muchos valores diferentes sin saturar mis .emacs con una lista de valores "seguros", agregué un consejo. Con la nomenclatura del ejemplo anterior, se ve así:

;; 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))  
  )  
Respondida el 09/12/2008 a las 20:20
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more