org-mode中的语法高亮。支持哪些编程语言?

6

当我试图在org-mode中突出显示SQL代码时,突出显示失败:

#+BEGIN_SRC SQL
SELECT *
FROM Production.Product
ORDER BY Name ASC;
#+END_SRC SQL

它对于Python、Shell等非常有效,但对于SQL不起作用。我想知道我是否使用了错误的关键字。

考虑到这一点:

  • 我如何突出显示SQL代码?
  • 在哪里可以找到支持的语言列表?

您可以在org-babel的这里找到支持的语言列表:http://orgmode.org/worg/org-contrib/babel/languages.html。但是,您可以使用更多的模式进行语法高亮。 - theldoria
2个回答

10

SQL 应该使用小写字母 sql,在 END_SRC 行中不需要重复语言名称:


#+BEGIN_SRC sql
  SELECT *
  FROM Production.Product
  ORDER BY Name ASC;
#+END_SRC

org-mode只是在给定的语言名称后附加-mode,并尝试查找一个主模式函数。Emacs Lisp函数名称区分大小写,因此存在sql-mode,而不存在SQL-mode

您可以通过键入C-h a -mode$来获取所有这些函数的列表,即搜索所有以-mode结尾的函数,但结果列表包含许多不是用于编程语言的主要模式的模式。


4

另一种选项是告诉org-mode使用sql-mode来处理SQL片段。这可以通过变量org-src-lang-modes来实现:

(add-to-list 'org-src-lang-modes (cons "SQL" 'sql))

例如,这种链接默认情况下适用于 C (c-mode) 和 C++ / c++ (cpp-mode)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接