vim не выделяет SQL, встроенный в Python [duplicate]

Вот очень простой пример Javascript, в котором используется jQuery:

function logout(to_url) {
    var out = window.location.href.replace(/:\/\//, '://log:out@');

    jQuery.get(out).error(function() {
        window.location = to_url;
    });
}

Этот пользователь журнала отключен, снова не показывая ему окно входа в браузер, а затем перенаправляет его на в журнале ] page

2
задан Community 23 May 2017 в 12:01
поделиться

1 ответ

Вам нужно будет изменить и переопределить синтаксис pythonString. Из /usr/share/vim/vim74/syntax/python.vim:

" Triple-quoted strings can contain doctests.
syn region  pythonString
    \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=pythonEscape,@Spell
syn region  pythonString
    \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell
syn region  pythonRawString
    \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=@Spell
syn region  pythonRawString
    \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonSpaceError,pythonDoctest,@Spell

С помощью syn clear pythonString вы можете очистить выделенную синтаксическую подсветку для него, а затем мы можем переопределить с помощью @SQL, добавленного в contains. Полагая это в ~/.vim/after/syntax/python.vim, кажется, хорошо работает:

" SQL syntax file won't load if this is set
unlet b:current_syntax

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

" We don't need these (a string inside a string!)
syn cluster SQL remove=sqlString,sqlComment

" Clear existing syntax
syntax clear pythonString

" Triple-quoted strings can contain SQL. This is the same as the original
" except with @SQL added in contains=
syn region  pythonString
    \ start=+[uU]\=\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=pythonEscape,@Spell
syn region  pythonString
    \ start=+[uU]\=\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonEscape,pythonSpaceError,pythonDoctest,@Spell,@SQL
syn region  pythonRawString
    \ start=+[uU]\=[rR]\z(['"]\)+ end="\z1" skip="\\\\\|\\\z1"
    \ contains=@Spell
syn region  pythonRawString
    \ start=+[uU]\=[rR]\z('''\|"""\)+ end="\z1" keepend
    \ contains=pythonSpaceError,pythonDoctest,@Spell,@SQL

" Re-set current syntax
let b:current_syntax = 'python'
2
ответ дан Martin Tournoij 19 August 2018 в 03:47
поделиться
  • 1
    Спасибо! Как добавить некоторые ключевые слова, которые не выделяются стандартным файлом синтаксиса sql.vim ?. Я пытался syn keyword sqlKeyword INNER RIGHT LEFT OUTER JOIN перед let b:current_syntax = 'pysql', но он не работает. – petobens 9 March 2016 в 14:32
  • 2
    Похоже, что это работает над линией syntax clear pythonString. – petobens 9 March 2016 в 14:44
  • 3
    @petobens Вы можете настроить SQL-вкус. См. :help ft_sql.txt и файл syntax/sql.vim. Значение по умолчанию довольно простое, но оно поддерживает гораздо больше. – Martin Tournoij 9 March 2016 в 14:55
Другие вопросы по тегам:

Похожие вопросы: