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