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