我正在阅读一堆使用#(到行尾)注释的MySQL文件,但我的sql-mode不支持它们。我发现sql.el的语法表部分定义了/ ** /和 - comments,但是根据this,Emacs语法表只支持2种注释样式。
有没有办法轻松添加对sql.el中#comments的支持?
答案 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)