我正在阅读一堆使用 # (到行尾)注释的 MySQL 文件,但我的 sql-mode 不支持它们。我找到了定义 /**/ 和 -- 注释的 sql.el 的语法表部分,但据此, Emacs 语法表仅支持 2 种注释样式。
有没有办法在 sql.el 中轻松添加对 # 注释的支持?
Emacs-24 sql.el 内置了这个!只需运行M-x sql-set-product MySQL RET
,语法表就会自动设置,所有其他保留字和类型的字体锁定关键字、交互模式等也是如此。太棒了!
如果您SQL
在菜单栏中查看,您可以使用Product
子菜单进行选择MySQL
。
您还M-x customize-variable sql-product RET
可以将默认产品设置为远离 ANSI。
罗尔夫的回答似乎对我不起作用。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))
您可以定义 ?# 来启动注释样式 b,这意味着有两种方式来启动替代注释样式( -- 或 #):
(setq sql-mode-syntax-table (let ((table (make-syntax-table))) ;; C 风格的注释 /**/(参见 elisp 手册“语法标志”)) (修改语法条目?/“.14”表) (修改语法条目?*“。23”表) ;; 双破折号开始评论 (修改语法条目?-“.12b”表) (修改语法条目?#“b”表) (修改语法条目 ?\f "> b" 表) ;; 单引号 (') 分隔字符串 (修改语法条目?' "\"" 表) ;; 双引号 (") 不分隔字符串 (修改语法条目?\" "." 表) ;; 反斜杠不是转义字符 (修改语法条目?\\“。”表) 桌子))
(这是从 sql.el 复制并修改的,这意味着这是 GPL)