From 698ad18c3aba2dc753b173344340bf63065ffb1e Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 10 Nov 2020 18:15:24 +0200 Subject: [PATCH 1/3] Ability to customize tags --- README.md | 7 +++++++ after/syntax/javascript/sql.vim | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 13b6558..545ef50 100644 --- a/README.md +++ b/README.md @@ -30,3 +30,10 @@ This plugin uses the generic SQL syntax by default. If you want to use a differe ```vim let g:javascript_sql_dialect = 'pgsql' ``` + +List of tags can be overridden using: + +```vim +let g:javascript_sql_tags = ['sql', 'customSql'] +" default is ['SQL'] +``` diff --git a/after/syntax/javascript/sql.vim b/after/syntax/javascript/sql.vim index 1b2ea55..e37d80b 100644 --- a/after/syntax/javascript/sql.vim +++ b/after/syntax/javascript/sql.vim @@ -7,13 +7,19 @@ if exists('b:current_syntax') unlet b:current_syntax endif +if !exists('g:javascript_sql_tags') + let g:javascript_sql_tags = ['SQL'] +endif + exec 'syntax include @SQLSyntax syntax/' . g:javascript_sql_dialect . '.vim' if exists('s:current_syntax') let b:current_syntax = s:current_syntax endif +let s:tags_regex = join(g:javascript_sql_tags, '\|') + syntax region sqlTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=@SQLSyntax,jsTemplateExpression,jsSpecial extend -exec 'syntax match sqlTaggedTemplate +\%(SQL\)\%(`\)\@=+ nextgroup=sqlTemplateString' +exec 'syntax match sqlTaggedTemplate +\%(' . s:tags_regex . '\)\%(`\)\@=+ nextgroup=sqlTemplateString' hi def link sqlTemplateString jsTemplateString hi def link sqlTaggedTemplate jsTaggedTemplate From 00028b03eaac43ded11457bee276ee48165671fa Mon Sep 17 00:00:00 2001 From: Taras Date: Tue, 4 May 2021 19:41:31 +0300 Subject: [PATCH 2/3] Fix compatiblity issue with pangloss/vim-javascript --- after/syntax/javascript/sql.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/after/syntax/javascript/sql.vim b/after/syntax/javascript/sql.vim index e37d80b..adbfab0 100644 --- a/after/syntax/javascript/sql.vim +++ b/after/syntax/javascript/sql.vim @@ -24,5 +24,5 @@ exec 'syntax match sqlTaggedTemplate +\%(' . s:tags_regex . '\)\%(`\)\@=+ nextgr hi def link sqlTemplateString jsTemplateString hi def link sqlTaggedTemplate jsTaggedTemplate -syn cluster jsExpression add=sqlTaggedTemplate +syn cluster jsExpression add=sqlTemplateString,sqlTaggedTemplate syn cluster sqlTaggedTemplate add=sqlTemplateString From e5842ae0ccc0b720669c12c11ef5803a147bef35 Mon Sep 17 00:00:00 2001 From: Taras Date: Thu, 6 May 2021 23:09:59 +0300 Subject: [PATCH 3/3] Improve highlighting based on gql plugin --- after/syntax/javascript/sql.vim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/after/syntax/javascript/sql.vim b/after/syntax/javascript/sql.vim index adbfab0..fc5b01f 100644 --- a/after/syntax/javascript/sql.vim +++ b/after/syntax/javascript/sql.vim @@ -16,13 +16,17 @@ if exists('s:current_syntax') let b:current_syntax = s:current_syntax endif -let s:tags_regex = join(g:javascript_sql_tags, '\|') +let s:tags = '\%(' . join(g:javascript_sql_tags, '\|') . '\)' -syntax region sqlTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=@SQLSyntax,jsTemplateExpression,jsSpecial extend -exec 'syntax match sqlTaggedTemplate +\%(' . s:tags_regex . '\)\%(`\)\@=+ nextgroup=sqlTemplateString' +" will work only with pangloss/vim-javascript +" inspired by https://github.com/jparise/vim-graphql/blob/master/after/syntax/javascript/graphql.vim +exec 'syntax region sqlTemplateString matchgroup=jsTemplateString start=+' . s:tags . '\@20<=`+ skip=+\\\\\|\\`+ end=+`+ contains=@SQLSyntax,jsTemplateExpression,jsSpecial extend' +exec 'syntax match sqlTaggedTemplate +' . s:tags . '\ze`+ nextgroup=sqlTemplateString' +syntax region sqlTemplateExpression start=+${+ end=+}+ contained contains=jsTemplateExpression keepend hi def link sqlTemplateString jsTemplateString hi def link sqlTaggedTemplate jsTaggedTemplate +hi def link sqlTemplateExpression jsTemplateExpression syn cluster jsExpression add=sqlTemplateString,sqlTaggedTemplate syn cluster sqlTaggedTemplate add=sqlTemplateString