3

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

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

4

3 回答 3

4

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

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

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

于 2014-11-20T19:37:19.340 回答
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))
于 2010-04-04T12:35:30.023 回答
1

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

(setq sql-mode-syntax-table
  (let ((table (make-syntax-table)))
    ;; C 风格的注释 /**/(参见 elisp 手册“语法标志”))
    (修改语法条目?/“.14”表)
    (修改语法条目?*“。23”表)
    ;; 双破折号开始评论
    (修改语法条目?-“.12b”表)
    (修改语法条目?#“b”表)
    (修改语法条目 ?\f "> b" 表)
    ;; 单引号 (') 分隔字符串
    (修改语法条目?' "\"" 表)
    ;; 双引号 (") 不分隔字符串
    (修改语法条目?\" "." 表)
    ;; 反斜杠不是转义字符
    (修改语法条目?\\“。”表)
    桌子))

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

于 2009-01-27T21:04:41.503 回答