Πώς μπορώ να ορίσω ένα όνομα ρυθμιστικό Emacs με μια τοπική μεταβλητή αρχείο;

ψήφοι
9

Θέλω emacs μου ρυθμιστικό να έχει διαφορετικό όνομα από το όνομα του αρχείου. Αντί ρύθμιση αυτή με το χέρι κάθε φορά, θέλω να έχω αυτό να συμβεί αυτόματα, με βάση τα περιεχόμενα του αρχείου, κάτι σαν:

// Τοπικές μεταβλητές:
// ρυθμιστικό-name: myname
// End:

Αλλά αυτό δεν λειτουργεί, διότι ρυθμιστικό όνομα είναι μια λειτουργία, όχι μια μεταβλητή. Πως μπορώ να το κάνω?

Δημοσιεύθηκε 09/12/2008 στις 16:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
12

Θα μπορούσες να πεις:

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

Είναι ένα τέχνασμα όμως.

Διαφορετικά, ενδέχεται να προγραμματίσετε ένα find-file-hookγάντζο που σου .emacsοποίων μετονομάσετε το ρυθμιστικό σε μια συγκεκριμένη τοπική μεταβλητή περιεχόμενο. Κάτι όπως:

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

Με περισσότερα εγκεφάλου δύναμη που θα μπορούσε να έχει ένα καλύτερο λύση.

Σημειώστε ότι θα μπορούσε να υπάρχει ήδη μια επέκταση για τις ανάγκες σας. Δείτε στο wiki Emacs .

Απαντήθηκε 09/12/2008 στις 17:30
πηγή χρήστη

ψήφοι
3

Ευχαριστώ Pierre. Σας PDP-ρυθμιστικό όνομα 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))  
  )  
Απαντήθηκε 09/12/2008 στις 20:20
πηγή χρήστη

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