2009-08-19 13 views
14

Tengo una extensión Emacs que crea un búfer llamado *erl-output*. Este buffer se crea con solo fundamental-mode de manera predeterminada. ¿Hay alguna manera de habilitar automáticamente compilation-minor-mode en ese búfer?En Emacs, ¿cómo habilitar automáticamente un modo secundario en función del nombre del búfer?

+2

Use la fuente, luke. – jrockway

+0

Miré 'compile.el' pero no encontré nada útil allí. –

+2

¿Por qué quieres 'compilation-minor-mode'? ¿Por qué no el modo principal? –

Respuesta

20

para cambiar automáticamente los modos principales se puede añadir lo siguiente en el fichero .emacs:

(add-to-list 'auto-mode-alist '("^\\*erl-output\\*$" . my-major-mode)) 

Esto no funcionará para usted; es para la selección del modo principal y está después de la selección del modo menor.

En su lugar, puedes probar Hook. El manual dice:

Un gancho es una variable Lisp que contiene una lista de funciones, para ser llamado en alguna ocasión bien definida.

Debe poder escribir una función que establezca el modo secundario cuando sea necesario. En cuanto a List of Standard Hooks, creo que debería intentar temp-buffer-setup-hook or temp-buffer-show-hook.

Vas a tener que escribir una función que comprueba el nombre del búfer y establece el modo en caso necesario, y añadirlo al gancho de usar algo como lo siguiente en su .emacs:

(add-hook 'temp-buffer-setup-hook 'my-func-to-set-mode) 
+0

Sí, ese es exactamente el problema que tengo. :-) –

+0

@Adam - He actualizado mi respuesta para cubrir Hooks, así como auto-mode-alist; espero que funcionen para usted. –

+0

He intentado habilitar el modo principal sin éxito. En .emacs pongo: '(add-to-list 'auto-mode-alist' ("^\\ * erl-output \\ * $ ". Compilation-mode))' No se ha creado con ' compilation-mode'. Si manualmente creo un búfer con '(get-buffer-create" * erl-output * ") el modo aún no se establece –

4

Debido a que su extensión es la creación de la memoria intermedia, por qué no sólo tiene que añadir:

(compilation-mode) 

(o (compilation-minor-mode) si realmente establece en la idea de modo menor) en el código que está creando el buffer *erl-output*. Puede editar la fuente para el modo, o usar consejos sobre la rutina de creación ...

+0

'compilation-mode' parece hacer que el buffer sea solo de lectura. La extensión escribe en el búfer de vez en cuando. –

+0

Ah, esa sería una buena razón, gracias. –

Cuestiones relacionadas