【问题标题】:How to make Emacs sql-mode recognize MySQL #-style comments?如何让 Emacs sql-mode 识别 MySQL #-style 注释?
【发布时间】:2009-01-27 19:21:08
【问题描述】:

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

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

【问题讨论】:

  • 您可以使用 Emacs 附带的文档:C-h i m elisp RET m syntax flags RET,而不是查找 zvon.org。如果你有一个最近的 Emacs,它会说:A comment style is a set of flags ‘b’, ‘c’, and ‘n’, so there can be up to 8 different comment styles. 但是,当然,在这种特殊情况下,这是无关紧要的,因为 #...\n--...\n 被认为是一种风格(因为你不能有评论启动器(或 ender) 属于两种不同的风格)。

标签: sql emacs comments elisp sql-mode


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    Rolf 的回答似乎对我不起作用。 AFAIK,用于启动 cmets 的字符类,替代注释样式应该是“

        (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
    • 这对我有用,但后来我发现 Emacs-24 内置了 MySQL 支持!详情见我的回答。
    • 函数中的set-syntax-table 是多余的。
    【解决方案3】:

    你可以定义?#来启动comment-style b,这意味着有两种方式来启动替代的评论风格(或者--或者#):

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

    (这个是从sql.el复制过来修改的,也就是说这是GPL)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2014-05-24
      • 2023-03-29
      • 2016-01-05
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多