vim没有突出显示Python中嵌入的SQL

时间:2018-06-02 10:31:49

标签: python sql vim syntax-highlighting vim-syntax-highlighting

我正在尝试为Python中嵌入的SQL实现vim-java-sql package的版本。到目前为止,我已经将以下内容保存在 after/syntax/python.vim 中,在vim-java-sql中的after/syntax/java.vim文件中松散地建模:

" Disable current syntax temporarily.
let saved_syntax = b:current_syntax
unlet! b:current_syntax

" Load SQL syntax.
syntax include @SQL syntax/sql.vim

syntax region sqlSnippet start=/\C\zs/ end=/\ze/ keepend contained containedin=pythonString contains=@SQL

" Restore original syntax.
let b:current_syntax = saved_syntax
unlet! saved_syntax

但是,这似乎不适用于小型测试文件:

#!/usr/bin/env python3
# pylint:disable=missing-docstring,invalid-name

def query(sql):
    return sql

f = query('bla')
f = query('''
    SELECT foo
    FROM bar
''')

当我打开此文件时,SQL查询仍然以Python字符串突出显示,并且没有任何通常给予SQL的突出显示。

我已经调查了,我不太清楚为什么会这样。

  • 当我在Python文件中的SQL查询区域内使用Vim的synstack方法时,它会在结尾处显示sqlSnippet和sqlStatement(后者来自Vim的默认SQL语法文件)的项目。堆。这与我在包含SQL查询的Java文件的synstack末尾看到的情况相同。但是,synID在Java文件中返回sqlStatement的标识符,但在Python文件中返回pythonString的标识符,无论我是否将trans参数设置为synID为0或1。

  • 我已经调查this question关于在TeX中嵌入Python以及来自那里的链接,并且它的任何建议似乎都不起作用(但如果您认为我忽略了,请告诉我东西)。

  • 我已验证vim-java-sql适用于示例Java文件。

如何让Vim正确突出显示嵌入Python的SQL查询,因为vim-java-sql包提供了嵌入Java的SQL查询?

0 个答案:

没有答案