2011-01-25 84 views
15

我使用emacs編輯我的sql代碼。我在postgresql plpgsql代碼上工作了99%的時間。我所有擴展名爲.sql的文件都包含postgresql。我很好奇是否有辦法設置sql-highlight-postgres-keywords SQL突出顯示默認值而不是ANSI SQL,因爲每次打開文件時都會切換模式,這非常煩人。默認情況下讓emacs突出顯示postgresql語法

+1

'sql-highlight-postgres-keywords`是一個變量嗎?我在Emacs 23中找不到它。我使用了似乎可以工作的`M-x sql-mode`,但那只是一次性的。 – SabreWolfy 2012-06-18 17:26:54

+1

我使用sql-highlight- -sql-mode中的關鍵字來根據數據庫更改語法高亮顯示。如果你不在sql模式下,你將無法使用它。 – 2012-06-20 14:13:35

回答

14

通常在emacs中,如果您想在每次打開某個模式時更改設置,請使用掛鉤。同樣的事情也給這應該工作:

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

如果需要使用不同的數據庫工作,而不是用一個鉤子隨時切換到PostgreSQL突出,當你打開一個.sql文件,你可以使用Emacs的文件變量功能以文件爲單位設置產品。

例如,如果你的.sql文件的第一行是

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

SQL模式會自動使用PostgreSQL突出。在Emacs的文件變量here(你也可以設置它們在文件中的任何地方的塊),和產品名稱的列表

全部細節可能是eaiest做M-x sql-set-product,後退的ansi默認值,按Tab看發現完成清單。例如「mysql」,「oracle」,「sqlite」等(我的安裝中大概有十幾個)。