Bram Moolenaar | 1ef15e3 | 2006-02-01 21:56:25 +0000 | [diff] [blame] | 1 | " Vim filetype plugin file |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 2 | " Language: Javascript |
| 3 | " Maintainer: Doug Kearns <dougkearns@gmail.com> |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 4 | " Contributor: Romain Lafourcade <romainlafourcade@gmail.com> |
Doug Kearns | 93197fd | 2024-01-14 20:59:02 +0100 | [diff] [blame] | 5 | " Last Change: 2024 Jan 14 |
Bram Moolenaar | 1ef15e3 | 2006-02-01 21:56:25 +0000 | [diff] [blame] | 6 | |
| 7 | if exists("b:did_ftplugin") |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 8 | finish |
Bram Moolenaar | 1ef15e3 | 2006-02-01 21:56:25 +0000 | [diff] [blame] | 9 | endif |
| 10 | let b:did_ftplugin = 1 |
| 11 | |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 12 | let s:cpo_save = &cpo |
| 13 | set cpo-=C |
| 14 | |
| 15 | " Set 'formatoptions' to break comment lines but not other lines, |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 16 | " and insert the comment leader when hitting <CR> or using "o". |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 17 | setlocal formatoptions-=t formatoptions+=croql |
| 18 | |
| 19 | " Set completion with CTRL-X CTRL-O to autoloaded function. |
Bram Moolenaar | 1ef15e3 | 2006-02-01 21:56:25 +0000 | [diff] [blame] | 20 | if exists('&ofu') |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 21 | setlocal omnifunc=javascriptcomplete#CompleteJS |
Bram Moolenaar | 1ef15e3 | 2006-02-01 21:56:25 +0000 | [diff] [blame] | 22 | endif |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 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 | |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 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" |
Doug Kearns | 93197fd | 2024-01-14 20:59:02 +0100 | [diff] [blame] | 37 | if has("win32") |
| 38 | let b:browsefilter ..= "All Files (*.*)\t*\n" |
| 39 | else |
| 40 | let b:browsefilter ..= "All Files (*)\t*\n" |
| 41 | endif |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 42 | endif |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 43 | |
| 44 | " The following suffixes should be implied when resolving filenames |
| 45 | setlocal suffixesadd+=.js,.jsx,.es,.es6,.cjs,.mjs,.jsm,.vue,.json |
| 46 | |
| 47 | " The following suffixes should have low priority |
| 48 | " .snap jest snapshot |
| 49 | setlocal suffixes+=.snap |
| 50 | |
| 51 | " Remove irrelevant part of 'path'. |
| 52 | " User is expected to augment it with contextually-relevant paths |
| 53 | setlocal path-=/usr/include |
| 54 | |
| 55 | " Matchit configuration |
| 56 | if exists("loaded_matchit") |
| 57 | let b:match_ignorecase = 0 |
| 58 | let b:match_words = |
| 59 | \ '\<do\>:\<while\>,' |
| 60 | \ .. '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,' |
| 61 | \ .. '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>' |
| 62 | endif |
| 63 | |
| 64 | " Set 'define' to a comprehensive value |
| 65 | let &l:define = |
| 66 | \ '\(^\s*(*async\s\+function\|(*function\)' |
| 67 | \ .. '\|^\s*\(\*\|static\|async\|get\|set\|\i\+\.\)' |
| 68 | \ .. '\|^\s*\(\ze\i\+\)\(([^)]*).*{$\|\s*[:=,]\)' |
| 69 | \ .. '\|^\s*\(export\s\+\|export\s\+default\s\+\)*\(var\|let\|const\|function\|class\)' |
| 70 | \ .. '\|\<as\>' |
| 71 | |
| 72 | let b:undo_ftplugin = |
| 73 | \ "setl fo< ofu< com< cms< sua< su< def< pa<" |
| 74 | \ .. "| unlet! b:browsefilter b:match_ignorecase b:match_words" |
Bram Moolenaar | c81e5e7 | 2007-05-05 18:24:42 +0000 | [diff] [blame] | 75 | |
| 76 | let &cpo = s:cpo_save |
| 77 | unlet s:cpo_save |
Bram Moolenaar | 207f009 | 2020-08-30 17:20:20 +0200 | [diff] [blame] | 78 | |
| 79 | " vim: textwidth=78 tabstop=8 shiftwidth=4 softtabstop=4 expandtab |