Как заставить Emacs sql-mode распознавать комментарии в стиле MySQL #?

Я читаю кучу файлов MySQL, которые используют # (для конца строки) комментариев, но мой sql-режим их не поддерживает. Я нашел часть таблицы синтаксиса в sql.el, которая определяет /**/ и - comments, но в соответствии с этим таблицы синтаксиса Emacs поддерживают только 2 стиля комментариев.

Есть ли способ легко добавить поддержку # комментариев в sql.el?

3 ответа

Emacs-24 sql.el имеет эту встроенную! Просто беги M-x sql-set-product MySQL RET и таблица синтаксиса устанавливается автоматически, как и ключевые слова font-lock для всех дополнительных зарезервированных слов и типов, интерактивного режима и т. д., и т. д. Brilliant!!

Если вы посмотрите под SQL в меню вы можете использовать Product Подменю для выбора MySQL,

Вы также можете M-x customize-variable sql-product RET установить продукт по умолчанию от ANSI.

Ответ Рольфа, похоже, не сработал для меня. AFAIK, класс символов для начальных комментариев, альтернативного стиля комментария должен быть "

    (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
  (пусть ((таблица (make-синтаксис-таблица)));; Комментарии в стиле C /**/ (см. Руководство elisp "Синтаксические флаги"))
    (изменить запись синтаксиса?/ ". 14" таблица)
    (изменить запись синтаксиса?* ". 23" таблица);; двойной тире начинается комментарии
    (изменить запись синтаксиса? - таблица ". 12b")
    (изменить запись синтаксиса?# " b" таблица)
    (изменить запись синтаксиса?\f "> b" таблица);; одинарные кавычки (') строки-разделители
    (изменить запись синтаксиса?' "\""таблица);; двойные кавычки (") не разделяют строки
    (изменить запись синтаксиса?\" "."таблица);; обратная косая черта не является escape-символом
    (изменить запись синтаксиса?\\ "." таблица)
    Таблица))

(Это было скопировано из sql.el и изменено, что означает, что это GPL)

Другие вопросы по тегам