如何使Emacs sql-mode识别MySQL#-style评论?

时间:2009-01-27 19:21:08

标签: sql emacs comments elisp sql-mode

我正在阅读一堆使用#(到行尾)注释的MySQL文件,但我的sql-mode不支持它们。我发现sql.el的语法表部分定义了/ ** /和 - comments,但是根据this,Emacs语法表只支持2种注释样式。

有没有办法轻松添加对sql.el中#comments的支持?

3 个答案:

答案 0 :(得分:2)

罗尔夫的回答似乎对我没有用。替代评论样式的AFAIK(用于开始评论的字符类)应为“< b”,而不是“b”。这就是我用的:

    (add-hook 'sql-mode-hook 'my-sql-mode-hook) 
    (defun my-sql-mode-hook ()   
      ;; Make # start a new line comment in SQL. This is MySQL-specific
      ;; syntax.
      (modify-syntax-entry ?# "< b" sql-mode-syntax-table))

答案 1 :(得分:2)

Emacs-24 sql.el有这个内置功能!只需运行M-x sql-set-product MySQL RET,语法表就会自动设置,所有其他保留字和类型的字体锁定关键字,交互模式等等都会自动设置。很棒!!

如果您在菜单栏中的SQL下查看,可以使用Product子菜单选择MySQL

您还可以M-x customize-variable sql-product RET将默认产品设置为远离ANSI。

答案 2 :(得分:1)

你可以定义?#来启动注释式b,这意味着有两种方式可以启动备用注释样式(或 - 或#):

(setq sql-mode-syntax-table
  (let ((table (make-syntax-table)))
    ;; C-style comments /**/ (see elisp manual "Syntax Flags"))
    (modify-syntax-entry ?/ ". 14" table)
    (modify-syntax-entry ?* ". 23" table)
    ;; double-dash starts comments
    (modify-syntax-entry ?- ". 12b" table)
    (modify-syntax-entry ?# " b" table)
    (modify-syntax-entry ?\f "> b" table)
    ;; single quotes (') delimit strings
    (modify-syntax-entry ?' "\"" table)
    ;; double quotes (") don't delimit strings
    (modify-syntax-entry ?\" "." table)
    ;; backslash is no escape character
    (modify-syntax-entry ?\\ "." table)
    table))

(这是从sql.el复制并修改的,这意味着这是GPL)