2011-01-25 14 views
15

Utilizo emacs para editar mi código sql. Trabajo el 99% del tiempo en el código postgresql plpgsql. Todos mis archivos con extensión .sql contienen postgresql. Tengo curiosidad de que haya una forma de establecer sql-highlight-postgres-keywords resaltado SQL predeterminado en lugar de ANSI SQL, porque es bastante molesto cambiar de modo cada vez que abro un archivo.Hacer emacs para resaltar la sintaxis postgresql de forma predeterminada

+1

¿'sql-highlight-postgres-keywords' es una variable? No puedo encontrarlo en Emacs 23. Usé 'M-x sql-mode' que parecía funcionar, pero eso fue solo una vez. – SabreWolfy

+1

Utilizo sql-highlight- -keywords en sql-mode para cambiar el resaltado de sintaxis en función de DB. si no estás en el modo sql, no podrás usarlo. –

+0

^Gracias. Sí, funciona en modo sql :) – SabreWolfy

Respuesta

14

Por lo general, en emacs, si desea cambiar la configuración cada vez que se abre algún modo, utilice un gancho. Algo similar a esto debería funcionar:

(add-to-list 'auto-mode-alist 
      '("\\.psql$" . (lambda() 
           (sql-mode) 
           (sql-highlight-postgres-keywords)))) 
+0

Gracias, parece que es lo que estaba buscando. –

16

Si tiene que trabajar con diferentes bases de datos, en lugar de utilizar un gancho para cambiar siempre a PostgreSQL destacando cuando se abre un archivo .sql, se puede utilizar la función de las variables de archivos de Emacs para configurar el producto archivo por archivo.

Por ejemplo, si la primera línea de su archivo .sql es

-- -*- mode: sql; sql-product: postgres; -*- 

sql-mode utilizará automáticamente PostgreSQL resaltado.

Los detalles completos sobre las variables de Emacs archivos here (también se les puede fijar en un bloque de cualquier parte del archivo), y la lista de los nombres de los productos es, probablemente, eaiest encontrar haciendo M-x sql-set-product, backspacing el valor por defecto ansi, y golpear TAB para ver la lista de finalización Los ejemplos son "mysql", "oráculo", "sqlite", etc. (alrededor de una docena en mi instalación).

Cuestiones relacionadas