diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2021-04-14 12:11:13 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2021-04-14 12:11:26 +0200 | 
| commit | 067e07e137d26ca6bc3f8496fe7bd569500d7fa4 (patch) | |
| tree | 55e340bc5698fd426894568a0052db5ebe5e09b4 /autoload | |
| parent | 5de7022bcb4c7a155952dbeb666f912db3bde2af (diff) | |
| download | vim-polyglot-067e07e137d26ca6bc3f8496fe7bd569500d7fa4.tar.gz vim-polyglot-067e07e137d26ca6bc3f8496fe7bd569500d7fa4.zip | |
Change svelte provider, fixes #700
Diffstat (limited to 'autoload')
| -rw-r--r-- | autoload/svelte.vim | 71 | 
1 files changed, 71 insertions, 0 deletions
| diff --git a/autoload/svelte.vim b/autoload/svelte.vim new file mode 100644 index 00000000..60d31469 --- /dev/null +++ b/autoload/svelte.vim @@ -0,0 +1,71 @@ +if polyglot#init#is_disabled(expand('<sfile>:p'), 'svelte', 'autoload/svelte.vim') +  finish +endif + +let s:name = 'vim-svelte-plugin' +let s:debug = exists("g:vim_svelte_plugin_debug") +      \ && g:vim_svelte_plugin_debug == 1 + +function! svelte#GetConfig(name, default) +  let name = 'g:vim_svelte_plugin_'.a:name +  return exists(name) ? eval(name) : a:default +endfunction + +" Since svelte#Log and svelte#GetConfig are always called  +" in syntax and indent files, +" this file will be sourced when opening the first svelte file +if exists('##CursorMoved') && exists('*OnChangeSvelteSubtype') +  augroup vim_svelte_plugin +    autocmd! +    autocmd CursorMoved,CursorMovedI,WinEnter *.svelte +          \ call s:CheckSubtype() +  augroup END + +  let s:subtype = '' +  function! s:CheckSubtype() +    let subtype = GetSvelteSubtype() + +    if s:subtype != subtype +      call OnChangeSvelteSubtype(subtype) +      let s:subtype = subtype +    endif +  endfunction +endif + +function! s:SynsEOL(lnum) +  let lnum = prevnonblank(a:lnum) +  let cnum = strlen(getline(lnum)) +  return map(synstack(lnum, cnum), 'synIDattr(v:val, "name")') +endfunction + +function! GetSvelteSubtype() +  let lnum = line('.') +  let cursyns = s:SynsEOL(lnum) +  let syn = !empty(cursyns) ? get(cursyns, 0, '') : '' + +  let subtype = matchstr(syn, '\w\+\zeSvelte') +  if subtype =~ 'css\w\+' +    " For cssScss, cssLess, ... +    let subtype = subtype[3:] +  endif +  let subtype = tolower(subtype) +  return subtype +endfunction + +function! GetSvelteTag(...) +  let lnum = a:0 > 0 ? a:1 : line('.') +  let cursyns = s:SynsEOL(lnum) +  let syn = get(cursyns, 0, '') + +  if syn =~ 'SvelteTemplate' +    let tag = 'template' +  elseif syn =~ 'SvelteScript' +    let tag = 'script' +  elseif syn =~ 'SvelteStyle' +    let tag = 'style' +  else +    let tag = '' +  endif + +  return tag +endfunction | 
