2012-12-13 12 views
5

Lasciatemi dire che sono molto nuovo in emacs.La configurazione del gancio in modalità principale interessa altri buffer

Sto tentando di creare personalizzazioni per le principali modalità. Mentre le mie impostazioni funzionano correttamente, osservo che quando apro un nuovo buffer, quel buffer della personalizzazione in modalità principale viene applicato ad altri buffer di un tipo diverso.

Ad esempio, se apro un file denominato "Makefile", viene utilizzata la modalità makefile e vengono applicate le personalizzazioni. Se apro un altro file come 'test.c', viene usato c-mode, ma le personalizzazioni dalla modalità makefile vengono unite alle personalizzazioni da c-mode.

Le porzioni rilevanti del mio file .emacs si può vedere qui sotto:

(defun c-mode-settings() 
    (c-set-style     "bsd") 
    (set-buffer-file-coding-system 'utf-8-unix) 
    (show-paren-mode    1) 

    (setq c-basic-offset  4) 
    (setq tab-width    4) 
    (setq indent-tabs-mode  nil) 
    (setq c-tab-always-indent t) 
    (setq require-final-newline t) 
) 

(defun makefile-mode-settings() 
    (setq whitespace-style '(tabs spaces space-mark tab-mark face lines-tail)) 
    (whitespace-mode  t) 
    (show-paren-mode  1) 

    (setq tab-width    4) 
    (setq require-final-newline t) 
) 

(add-hook 'c-mode-hook  'c-mode-settings) 
(add-hook 'makefile-mode-hook 'makefile-mode-settings) 

Come posso mantenere questi ganci modalità di influenzare altri buffer in diverse modalità?

Grazie! Andrew

risposta

4

È necessario tenere conto del fatto che alcune variabili diventano locali per il buffer quando impostate, mentre alcune sono globali. Di solito hanno un commento corrispondente nella loro descrizione (utilizzare C-h v var-name per ottenere questa descrizione.

In alcuni casi, è possibile forzare che qualsiasi variabile diventano locale al buffer, utilizzando il

(set (make-local-variable 'var-name) var-value) 

ma è necessario fare attenzione con questo

+0

Guardare la descrizione aiuta C'è un modo per forzare una modalità secondaria globale a diventare locale? In particolare la modalità show-paren, in quanto questo è ciò che sta causando problemi – user1902144

+0

user1902144: Vedi [disabilita automaticamente una modalità secondaria globale per una modalità principale specifica] (http://stackoverflow.com/questions/6837511/au tomaticamente-disable-a-globale-minor-mode-per-a-specifico-major-mode/6839968) – phils

Problemi correlati