我正在读一堆使用#(到行尾)注释的MySQL文件,但我的sql模式不支持它们。我发现sql.el的语法表部分定义了/ ** /和 - 注释,但根据this,Emacs语法表仅支持2种注释样式。如何让Emacs的sql模式识别MySQL#样式的注释?
有没有办法在sql.el中轻松添加对#注释的支持? ?
我正在读一堆使用#(到行尾)注释的MySQL文件,但我的sql模式不支持它们。我发现sql.el的语法表部分定义了/ ** /和 - 注释,但根据this,Emacs语法表仅支持2种注释样式。如何让Emacs的sql模式识别MySQL#样式的注释?
有没有办法在sql.el中轻松添加对#注释的支持? ?
可以定义#开始注释风格的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复制。埃尔和修改,这意味着这是GPL)
Rolf的答案似乎不适用于我。 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))
这个解决方案为我做了诀窍。谢谢@arvixx! v24.2.50.1 – willwillis 2012-09-28 02:52:36
Emacs-24 sql.el有这个内置的!只需运行M-x sql-set-product MySQL RET
即可自动设置语法表,所有其他保留字和类型的字体锁定关键字,交互模式等等都是自动设置的。辉煌!
如果您在菜单栏中查看SQL
,则可以使用Product
子菜单来选择MySQL
。
您也可以使用M-x customize-variable sql-product RET
将默认产品设置为远离ANSI。
与其查阅zvon.org,您可以使用Emacs附带的文档:`C-h我的ELISP RET m语法标志RET`。如果你有一个最新的Emacs,它会说:`评论风格是一组标志'b','c'和'n',所以可以有多达8种不同的评论风格。'但是当然,在这种情况是无关紧要的,因为`#... \ n`和`--... \ n`被认为是1样式(因为你不能有一个属于两个不同的注释启动器样式)。 – Stefan 2014-11-21 14:28:35