diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2019-06-08 13:25:41 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2019-06-08 13:25:41 +0200 |
commit | 26c678b08d88b658ec6069eb2ada2b2ba21c5d39 (patch) | |
tree | ebf7500bafee56b195bf52ced286fe29e5b3f485 /autoload/jsx_pretty/comment.vim | |
parent | 17ecfbdabcfdf294dae27c506fb68b58175199b5 (diff) | |
download | vim-polyglot-26c678b08d88b658ec6069eb2ada2b2ba21c5d39.tar.gz vim-polyglot-26c678b08d88b658ec6069eb2ada2b2ba21c5d39.zip |
Change jsx/tsx provider, closes #400
Diffstat (limited to '')
-rw-r--r-- | autoload/jsx_pretty/comment.vim | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/autoload/jsx_pretty/comment.vim b/autoload/jsx_pretty/comment.vim new file mode 100644 index 00000000..d5d58f5d --- /dev/null +++ b/autoload/jsx_pretty/comment.vim @@ -0,0 +1,41 @@ +if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'jsx') != -1 + finish +endif + +function! jsx_pretty#comment#update_commentstring(original) + let syn_current = s:syn_name(line('.'), col('.')) + let syn_start = s:syn_name(line('.'), 1) + let save_cursor = getcurpos() + + if syn_start =~ '^jsx' + let line = getline(".") + let start = len(matchstr(line, '^\s*')) + let syn_name = s:syn_name(line('.'), start + 1) + + if line =~ '^\s*//' + let &l:commentstring = '// %s' + elseif s:syn_contains(line('.'), col('.'), 'jsxTaggedRegion') + let &l:commentstring = '<!-- %s -->' + elseif syn_name =~ '^jsxAttrib' + let &l:commentstring = '// %s' + else + let &l:commentstring = '{/* %s */}' + endif + else + let &l:commentstring = a:original + endif + + " Restore the cursor position + call setpos('.', save_cursor) +endfunction + +function! s:syn_name(lnum, cnum) + let syn_id = get(synstack(a:lnum, a:cnum), -1) + return synIDattr(syn_id, "name") +endfunction + +function! s:syn_contains(lnum, cnum, syn_name) + let stack = synstack(a:lnum, a:cnum) + let syn_names = map(stack, 'synIDattr(v:val, "name")') + return index(syn_names, a:syn_name) >= 0 +endfunction |