代码之家  ›  专栏  ›  技术社区  ›  Ken

如何使emacs sql模式识别mysql样式的注释?

  •  3
  • Ken  · 技术社区  · 17 年前

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

    有没有一种方法可以轻松地在sql.el中添加对注释的支持?

    3 回复  |  直到 11 年前
        1
  •  2
  •   kbro    11 年前

    emacs-24 sql.el有这个内置的!简单运行 M-x sql-set-product MySQL RET 而且语法表是自动设置的,所有附加的保留字和类型的字体锁定关键字,交互模式等等都很出色!!

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

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

        2
  •  2
  •   arvidj mropa    11 年前

    罗尔夫的回答似乎对我不起作用。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))
    
        3
  •  1
  •   Rolf Rander    17 年前

    你能定义吗?#要启动注释样式B,这意味着有两种方法可以启动替代注释样式(或者--or):

    (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))
    

    (这是从S.L.EL复制并修改的,这意味着这是GPL)。