1" Vim filetype plugin file 2" Language: Javascript 3" Maintainer: Doug Kearns <[email protected]> 4" Last Change: 2020 Jun 23 5" Contributor: Romain Lafourcade <[email protected]> 6 7if exists("b:did_ftplugin") 8 finish 9endif 10let b:did_ftplugin = 1 11 12let s:cpo_save = &cpo 13set cpo-=C 14 15" Set 'formatoptions' to break comment lines but not other lines, 16" and insert the comment leader when hitting <CR> or using "o". 17setlocal formatoptions-=t formatoptions+=croql 18 19" Set completion with CTRL-X CTRL-O to autoloaded function. 20if exists('&ofu') 21 setlocal omnifunc=javascriptcomplete#CompleteJS 22endif 23 24" Set 'comments' to format dashed lists in comments. 25setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// 26 27setlocal commentstring=//%s 28 29" Change the :browse e filter to primarily show JavaScript-related files. 30if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") 31 let b:browsefilter = 32 \ "JavaScript Files (*.js)\t*.js\n" 33 \ .. "JSX Files (*.jsx)\t*.jsx\n" 34 \ .. "JavaScript Modules (*.es, *.es6, *.cjs, *.mjs, *.jsm)\t*.es;*.es6;*.cjs;*.mjs;*.jsm\n" 35 \ .. "Vue Templates (*.vue)\t*.vue\n" 36 \ .. "JSON Files (*.json)\t*.json\n" 37 \ .. "All Files (*.*)\t*.*\n" 38endif 39 40" The following suffixes should be implied when resolving filenames 41setlocal suffixesadd+=.js,.jsx,.es,.es6,.cjs,.mjs,.jsm,.vue,.json 42 43" The following suffixes should have low priority 44" .snap jest snapshot 45setlocal suffixes+=.snap 46 47" Remove irrelevant part of 'path'. 48" User is expected to augment it with contextually-relevant paths 49setlocal path-=/usr/include 50 51" Matchit configuration 52if exists("loaded_matchit") 53 let b:match_ignorecase = 0 54 let b:match_words = 55 \ '\<do\>:\<while\>,' 56 \ .. '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,' 57 \ .. '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>' 58endif 59 60" Set 'define' to a comprehensive value 61let &l:define = 62 \ '\(^\s*(*async\s\+function\|(*function\)' 63 \ .. '\|^\s*\(\*\|static\|async\|get\|set\|\i\+\.\)' 64 \ .. '\|^\s*\(\ze\i\+\)\(([^)]*).*{$\|\s*[:=,]\)' 65 \ .. '\|^\s*\(export\s\+\|export\s\+default\s\+\)*\(var\|let\|const\|function\|class\)' 66 \ .. '\|\<as\>' 67 68let b:undo_ftplugin = 69 \ "setl fo< ofu< com< cms< sua< su< def< pa<" 70 \ .. "| unlet! b:browsefilter b:match_ignorecase b:match_words" 71 72let &cpo = s:cpo_save 73unlet s:cpo_save 74 75" vim: textwidth=78 tabstop=8 shiftwidth=4 softtabstop=4 expandtab 76