Nasıl bir dosya yerel değişken bir Emacs tampon adını ayarlarım?

oy
9

Ben emacs dosya adı farklı bir isme sahip tampon istiyorum. Aksine bu her seferinde el ayarlamak yerine, bu dosya içeriğine göre otomatik olarak gerçekleşir olsun istiyorum, gibi bir şey:

// Yerel Değişkenler:
// tampon-name: Kimimben
// Son:

Tampon-name bir işlev değil, bir değişkendir çünkü bu çalışmıyor. Bunu nasıl yapabilirim?

Oluştur 09/12/2008 saat 16:57
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
12

Söyleyebilirdin:

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

Ama bir hile.

Aksi takdirde bir programlayabilirdik find-file-hooksenin içinde kanca .emacsbelirli yerel değişken içeriğine tampon yeniden adlandırın. Gibi bir şey:

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

Sonra belirli dosyasında var

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

daha beyin gücü ile daha güzel bir çözüm olabilir.

Zaten ihtiyacı için bir uzantı var var olabileceğini unutmayın. Bak Emacs wiki .

Cevap 09/12/2008 saat 17:30
kaynak kullanıcı

oy
3

Teşekkürler Pierre. Sizin PDP-tampon-name elisp örnek çok iyi çalıştı.

Ben emacs daima değer uygulanmalıdır sormak isteyen, "güvenli olmayan" yani yerel değişken tedavi ediyordu fark çünkü bir geliştirme yapılmış. Bu "güvenli" bir değerler listesi ile benim .emacs kadar karmaşık hale getirmeden birçok farklı değerlerle çalışmak istiyorum, ben bir tavsiyede ekledi. Önceki örnekte isimlendirilmesi ile, şuna benzer:

;; 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))  
  )  
Cevap 09/12/2008 saat 20:20
kaynak kullanıcı

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