diff --git a/readme.md b/readme.md index 5ee6e9f..e03ce4d 100644 --- a/readme.md +++ b/readme.md @@ -92,3 +92,35 @@ autocmd BufRead,BufNewFile *.vue setlocal filetype=vue.html.javascript.css :warning: This may cause problems, because some plugins will then treat the whole buffer as html/javascript/css instead of only the part inside the tags. + +### How can I use NERDCommenter in Vue files? + +
+ +To use NERDCommenter with Vue files, you can use its "hooks" feature to +temporarily change the filetype. Click for an example. + + +```vim +let g:ft = '' +function! NERDCommenter_before() + if &ft == 'vue' + let g:ft = 'vue' + let stack = synstack(line('.'), col('.')) + if len(stack) > 0 + let syn = synIDattr((stack)[0], 'name') + if len(syn) > 0 + exe 'setf ' . substitute(tolower(syn), '^vue_', '', '') + endif + endif + endif +endfunction +function! NERDCommenter_after() + if g:ft == 'vue' + setf vue + let g:ft = '' + endif +endfunction +``` + +
diff --git a/test/install.sh b/test/install.sh index 1e08228..974b95c 100755 --- a/test/install.sh +++ b/test/install.sh @@ -4,6 +4,8 @@ set -e repos=( 'junegunn/vader.vim' + + # languages 'cakebaker/scss-syntax.vim' 'digitaltoad/vim-pug' 'groenewege/vim-less' @@ -11,6 +13,9 @@ repos=( 'leafgarland/typescript-vim' 'slm-lang/vim-slm' 'wavded/vim-stylus' + + # utility + 'scrooloose/nerdcommenter' ) cd "$(dirname "$0")/.." diff --git a/test/test_nerdcommenter.vader b/test/test_nerdcommenter.vader new file mode 100644 index 0000000..5389ded --- /dev/null +++ b/test/test_nerdcommenter.vader @@ -0,0 +1,40 @@ +Execute (Configure NERDCommenter to support Vue files): + let g:ft = '' + function! NERDCommenter_before() + if &ft == 'vue' + let g:ft = 'vue' + let stack = synstack(line('.'), col('.')) + if len(stack) > 0 + let syn = synIDattr((stack)[0], 'name') + if len(syn) > 0 + exe 'setf ' . substitute(tolower(syn), '^vue_', '', '') + endif + endif + endif + endfunction + function! NERDCommenter_after() + if g:ft == 'vue' + setf vue + let g:ft = '' + endif + endfunction + +Given vue: + +