From 2f3935516d1aea7dc3fbd9a45efec4ba9f0b6d50 Mon Sep 17 00:00:00 2001 From: DrSlump Date: Mon, 19 Sep 2011 22:55:46 +0200 Subject: [PATCH 0001/1043] Modified syntax groups regular expressions Instead of targetting the regular expressions to very specific syntax groups (ie: javaScriptDocComment), which make the indent script not compatible with other syntaxes (ie: jsComment), more generic versions are used which should still match the same groups by using case insensitive search and shorter patterns (string, regex and comment). --- indent/javascript.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index b34deee4..dfe2d076 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -33,13 +33,13 @@ set cpo&vim " ============ " Regex of syntax group names that are or delimit string or are comments. -let s:syng_strcom = 'javaScript\%(String\|RegexpString\|CommentTodo\|LineComment\|Comment\|DocComment\)' +let s:syng_strcom = 'string\|regex\|comment\c' " Regex of syntax group names that are strings. -let s:syng_string = 'javaScript\%(RegexpString\)' +let s:syng_string = 'regex\c' " Regex of syntax group names that are strings or documentation. -let s:syng_stringdoc = 'javaScriptDocComment\|javaScriptComment' +let s:syng_stringdoc = 'comment\c' " Expression used to check whether we should skip a match with searchpair(). let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'" From 395f8901b34cc871c9576886938a6efda0eb7268 Mon Sep 17 00:00:00 2001 From: Darrick Wiebe Date: Fri, 10 Aug 2012 15:19:42 -0400 Subject: [PATCH 0002/1043] Fix bug in a method that is apparently not called very often (if ever) --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 173c51b3..09200b28 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -159,7 +159,7 @@ function s:IndentWithContinuation(lnum, ind, width) " Set up variables to use and search for MSL to the previous line. let p_lnum = a:lnum let lnum = s:GetMSL(a:lnum, 1) - let line = getline(line) + let line = getline(lnum) " If the previous line wasn't a MSL and is continuation return its indent. " TODO: the || s:IsInString() thing worries me a bit. From 5da54c4095b973cddb80b4114e4570b52599dba3 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Tue, 19 Feb 2013 11:20:06 -0800 Subject: [PATCH 0003/1043] Adds syntax for Identifiers in labeled statements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit     { $: 'now this label has syntax highlighting' } Using this RegExp `[a-zA-Z_$][0-9a-zA-Z_$\-]` instead of just checking for `\w`. Although it doesn't cover the full range of characters an Identifier can be it does work for the 98%. --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 126c3211..e3ee90c5 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -78,7 +78,7 @@ syntax region javaScriptRegexpCharClass start=+\[+ end=+\]+ contained syntax region javaScriptRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@\|\<0[xX]\x\+\>/ syntax match javaScriptFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ -syntax match javaScriptLabel /\<\w\+\(\s*:\)\@=/ +syntax match javaScriptLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ "" JavaScript Prototype syntax keyword javaScriptPrototype prototype From 08c5b1f572d5671432ca0894b0459596c0bfedc9 Mon Sep 17 00:00:00 2001 From: Darrick Wiebe Date: Tue, 19 Feb 2013 17:43:34 -0500 Subject: [PATCH 0004/1043] Update README.md --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 280af92d..be63dbdd 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,21 @@ JavaScript bundle for vim, this bundle provides syntax and indent plugins. > Indentation of javascript in vim is terrible, and this is the very end of it. -## Feature +## Maintainer(s) wanted + +This project does not get too much love because, frankly I don't use JS all that +much anymore. This project's maintenance isn't much work, but it would be helpful to +everyone if one or two people would evaluate pull requests and merge them if they're +good. There are also a couple of valid issues that have been filed that would make +lots of people happy if they were addressed. Plus it might be good if someone updated +the script on vim.org occasionally. By the way, I'd be happy to put more effort into +helping a new maintainer get going than what I put in actually maintaining the project +myself. If you're interested, please comment on issue #65. + +Cheers! +Darrick + +## Features 1. very correct indentation for javascript 2. support javascript indentation in html (provided by [lepture](https://github.com/lepture)) From ba4f29212bca38ce38bc393c6bec33483b7b2df7 Mon Sep 17 00:00:00 2001 From: Darrick Wiebe Date: Tue, 19 Feb 2013 17:44:06 -0500 Subject: [PATCH 0005/1043] linkify --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be63dbdd..157c5142 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ good. There are also a couple of valid issues that have been filed that would m lots of people happy if they were addressed. Plus it might be good if someone updated the script on vim.org occasionally. By the way, I'd be happy to put more effort into helping a new maintainer get going than what I put in actually maintaining the project -myself. If you're interested, please comment on issue #65. +myself. If you're interested, please comment on issue [#65](https://github.com/pangloss/vim-javascript/issues/65). Cheers! Darrick From d28b72d6cc0f1de34d4eab08ca7e5cef8e36750a Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Tue, 19 Feb 2013 20:50:02 -0800 Subject: [PATCH 0006/1043] Adds new maintainer info. Removes trailing whitespace --- README.md | 14 -------------- indent/javascript.vim | 2 +- syntax/javascript.vim | 10 ++++------ 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 157c5142..efc1ec60 100644 --- a/README.md +++ b/README.md @@ -4,20 +4,6 @@ JavaScript bundle for vim, this bundle provides syntax and indent plugins. > Indentation of javascript in vim is terrible, and this is the very end of it. -## Maintainer(s) wanted - -This project does not get too much love because, frankly I don't use JS all that -much anymore. This project's maintenance isn't much work, but it would be helpful to -everyone if one or two people would evaluate pull requests and merge them if they're -good. There are also a couple of valid issues that have been filed that would make -lots of people happy if they were addressed. Plus it might be good if someone updated -the script on vim.org occasionally. By the way, I'd be happy to put more effort into -helping a new maintainer get going than what I put in actually maintaining the project -myself. If you're interested, please comment on issue [#65](https://github.com/pangloss/vim-javascript/issues/65). - -Cheers! -Darrick - ## Features 1. very correct indentation for javascript diff --git a/indent/javascript.vim b/indent/javascript.vim index 09200b28..77b8b112 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -116,7 +116,7 @@ function s:GetMSL(lnum, in_one_line_scope) " Don't use lines that are part of a one line scope as msl unless the " flag in_one_line_scope is set to 1 " - if a:in_one_line_scope + if a:in_one_line_scope break end let msl_one_line = s:Match(lnum, s:one_line_scope_regex) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index e3ee90c5..16119cd7 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -1,10 +1,8 @@ " Vim syntax file " Language: JavaScript -" Maintainer: Yi Zhao (ZHAOYI) -" Last Change By: Marc Harter -" Last Change: February 18, 2011 +" Maintainer: Josh Perez " Version: 0.7.9 -" Changes: Updates JSDoc syntax +" URL: https://github.com/pangloss/vim-javascript " " TODO: " - Add the HTML syntax inside the JSDoc @@ -85,7 +83,7 @@ syntax keyword javaScriptPrototype prototype "" Program Keywords syntax keyword javaScriptSource import export -syntax keyword javaScriptType const undefined var void yield +syntax keyword javaScriptType const undefined var void yield syntax keyword javaScriptOperator delete new in instanceof let typeof syntax keyword javaScriptBoolean true false syntax keyword javaScriptNull null @@ -158,7 +156,7 @@ syntax cluster javaScriptExpression2 contains=javaScriptComment,javaScriptLineCo syntax cluster javaScriptAll contains=@javaScriptExpression2,javaScriptLabel,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptStatement,javaScriptTernaryIf syntax region javaScriptBracket matchgroup=javaScriptBracket transparent start="\[" end="\]" contains=@javaScriptAll,javaScriptParensErrB,javaScriptParensErrC,javaScriptBracket,javaScriptParen,javaScriptBlock,@htmlPreproc syntax region javaScriptParen matchgroup=javaScriptParen transparent start="(" end=")" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrC,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc -syntax region javaScriptBlock matchgroup=javaScriptBlock transparent start="{" end="}" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrB,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc +syntax region javaScriptBlock matchgroup=javaScriptBlock transparent start="{" end="}" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrB,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc syntax region javaScriptTernaryIf matchgroup=javaScriptTernaryIfOperator start=+?+ end=+:+ contains=@javaScriptExpression2 "" catch errors caused by wrong parenthesis From 7fab32d952dc41ee0b066fd7dba4880f98f93da5 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Thu, 21 Feb 2013 00:29:38 -0800 Subject: [PATCH 0007/1043] Adds CommonJS keywords to syntax highlighting --- syntax/javascript.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 16119cd7..4ad91221 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -83,6 +83,7 @@ syntax keyword javaScriptPrototype prototype "" Program Keywords syntax keyword javaScriptSource import export +syntax keyword javaScriptCommonJS require module exports syntax keyword javaScriptType const undefined var void yield syntax keyword javaScriptOperator delete new in instanceof let typeof syntax keyword javaScriptBoolean true false @@ -229,6 +230,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink javaScriptLabel Label HiLink javaScriptSpecial Special HiLink javaScriptSource Special + HiLink javaScriptCommonJS Define HiLink javaScriptGlobalObjects Special HiLink javaScriptExceptions Special From 8c82cf076321048ef6cd1e68bcb7ecb61466da22 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Thu, 21 Feb 2013 11:10:24 -0800 Subject: [PATCH 0008/1043] Moves CommonJS from Define to Include --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 4ad91221..c03e6dfc 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -230,7 +230,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink javaScriptLabel Label HiLink javaScriptSpecial Special HiLink javaScriptSource Special - HiLink javaScriptCommonJS Define + HiLink javaScriptCommonJS Include HiLink javaScriptGlobalObjects Special HiLink javaScriptExceptions Special From 4ff3b73b8067fdd65f9512ad3ec11d7f7d659fa7 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Mon, 25 Feb 2013 12:29:33 -0800 Subject: [PATCH 0009/1043] Allows CommonJS syntax inside function blocks --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index c03e6dfc..2a8d08a1 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -153,7 +153,7 @@ endif "DOM/HTML/CSS "" Code blocks " there is a name collision with javaScriptExpression in html.vim, hence the use of the '2' here -syntax cluster javaScriptExpression2 contains=javaScriptComment,javaScriptLineComment,javaScriptDocComment,javaScriptStringD,javaScriptStringS,javaScriptRegexpString,javaScriptNumber,javaScriptFloat,javaScriptSource,javaScriptThis,javaScriptType,javaScriptOperator,javaScriptBoolean,javaScriptNull,javaScriptFunction,javaScriptGlobalObjects,javaScriptExceptions,javaScriptFutureKeys,javaScriptDomErrNo,javaScriptDomNodeConsts,javaScriptHtmlEvents,javaScriptDotNotation,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError +syntax cluster javaScriptExpression2 contains=javaScriptComment,javaScriptLineComment,javaScriptDocComment,javaScriptStringD,javaScriptStringS,javaScriptRegexpString,javaScriptNumber,javaScriptFloat,javaScriptSource,javaScriptCommonJS,javaScriptThis,javaScriptType,javaScriptOperator,javaScriptBoolean,javaScriptNull,javaScriptFunction,javaScriptGlobalObjects,javaScriptExceptions,javaScriptFutureKeys,javaScriptDomErrNo,javaScriptDomNodeConsts,javaScriptHtmlEvents,javaScriptDotNotation,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError syntax cluster javaScriptAll contains=@javaScriptExpression2,javaScriptLabel,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptStatement,javaScriptTernaryIf syntax region javaScriptBracket matchgroup=javaScriptBracket transparent start="\[" end="\]" contains=@javaScriptAll,javaScriptParensErrB,javaScriptParensErrC,javaScriptBracket,javaScriptParen,javaScriptBlock,@htmlPreproc syntax region javaScriptParen matchgroup=javaScriptParen transparent start="(" end=")" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrC,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc From f62100276e9518e7dd11aff12c6717e4003ffec6 Mon Sep 17 00:00:00 2001 From: Mathieu Quinette Date: Tue, 5 Mar 2013 17:33:38 +0100 Subject: [PATCH 0010/1043] Do not treat line comments with cindent. --- indent/javascript.vim | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 83e06901..481be853 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -41,6 +41,9 @@ let s:syng_string = 'regex\c' " Regex of syntax group names that are strings or documentation. let s:syng_multiline = 'comment\c' +" Regex of syntax group names that are line comment. +let s:syng_linecom = 'linecomment' + " Expression used to check whether we should skip a match with searchpair(). let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'" @@ -76,6 +79,11 @@ function s:IsInMultilineComment(lnum, col) return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline endfunction +" Check if the character at lnum:col is a line comment. +function s:IsLineComment(lnum, col) + return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_linecom +endfunction + " Find line above 'lnum' that isn't empty, in a comment, or in a string. function s:PrevNonBlankNonString(lnum) let in_block = 0 @@ -244,7 +252,7 @@ function GetJavascriptIndent() endif " If we are in a multi-line comment, cindent does the right thing. - if s:IsInMultilineComment(v:lnum, 1) + if s:IsInMultilineComment(v:lnum, 1) && !s:IsLineComment(v:lnum, 1) return cindent(v:lnum) endif From 4fe01683794105f5eddfbd3ae113d87aa800f7ce Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Tue, 5 Mar 2013 19:00:19 -0800 Subject: [PATCH 0011/1043] Renames javaScript to js This is to avoid name collisions and also for brevity This diff also does some style formatting --- syntax/javascript.vim | 275 +++++++++++++++++++++--------------------- 1 file changed, 136 insertions(+), 139 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 2a8d08a1..a9a6266f 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -28,12 +28,12 @@ setlocal iskeyword+=$ syntax sync fromstart "" JavaScript comments -syntax keyword javaScriptCommentTodo TODO FIXME XXX TBD contained -syntax region javaScriptLineComment start=+\/\/+ end=+$+ keepend contains=javaScriptCommentTodo,@Spell -syntax region javaScriptEnvComment start="\%^#!" end="$" display -syntax region javaScriptLineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend contains=javaScriptCommentTodo,@Spell fold -syntax region javaScriptCvsTag start="\$\cid:" end="\$" oneline contained -syntax region javaScriptComment start="/\*" end="\*/" contains=javaScriptCommentTodo,javaScriptCvsTag,@Spell fold +syntax keyword jsCommentTodo TODO FIXME XXX TBD contained +syntax region jsLineComment start=+\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell +syntax region jsEnvComment start="\%^#!" end="$" display +syntax region jsLineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell fold +syntax region jsCvsTag start="\$\cid:" end="\$" oneline contained +syntax region jsComment start="/\*" end="\*/" contains=jsCommentTodo,jsCvsTag,@Spell fold "" JSDoc / JSDoc Toolkit if !exists("javascript_ignore_javaScriptdoc") @@ -43,25 +43,25 @@ if !exists("javascript_ignore_javaScriptdoc") "syntax include @javaHtml :p:h/html.vim "unlet b:current_syntax - syntax region javaScriptDocComment matchgroup=javaScriptComment start="/\*\*\s*" end="\*/" contains=javaScriptDocTags,javaScriptCommentTodo,javaScriptCvsTag,@javaScriptHtml,@Spell fold + syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold " tags containing a param - syntax match javaScriptDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|exception\|exports\|extends\|file\|member\|memberOf\|methodOf\|module\|name\|namespace\|optional\|requires\|title\|throws\|version\)\>" nextgroup=javaScriptDocParam skipwhite + syntax match jsDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|exception\|exports\|extends\|file\|member\|memberOf\|methodOf\|module\|name\|namespace\|optional\|requires\|title\|throws\|version\)\>" nextgroup=jsDocParam skipwhite " tags containing type and param - syntax match javaScriptDocTags contained "@\(argument\|param\|property\)\>" nextgroup=javaScriptDocType skipwhite + syntax match jsDocTags contained "@\(argument\|param\|property\)\>" nextgroup=jsDocType skipwhite " tags containing type but no param - syntax match javaScriptDocTags contained "@\(type\|return\|returns\|api\)\>" nextgroup=javaScriptDocTypeNoParam skipwhite + syntax match jsDocTags contained "@\(type\|return\|returns\|api\)\>" nextgroup=jsDocTypeNoParam skipwhite " tags containing references - syntax match javaScriptDocTags contained "@\(lends\|link\|see\)\>" nextgroup=javaScriptDocSeeTag skipwhite + syntax match jsDocTags contained "@\(lends\|link\|see\)\>" nextgroup=jsDocSeeTag skipwhite " other tags (no extra syntax) - syntax match javaScriptDocTags contained "@\(access\|addon\|alias\|author\|beta\|constant\|const\|constructor\|copyright\|deprecated\|description\|event\|example\|exec\|field\|fileOverview\|fileoverview\|function\|global\|ignore\|inner\|license\|overview\|private\|protected\|project\|public\|readonly\|since\|static\)\>" + syntax match jsDocTags contained "@\(access\|addon\|alias\|author\|beta\|constant\|const\|constructor\|copyright\|deprecated\|description\|event\|example\|exec\|field\|fileOverview\|fileoverview\|function\|global\|ignore\|inner\|license\|overview\|private\|protected\|project\|public\|readonly\|since\|static\)\>" - syntax region javaScriptDocType start="{" end="}" oneline contained nextgroup=javaScriptDocParam skipwhite - syntax match javaScriptDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=javaScriptDocParam skipwhite - syntax region javaScriptDocTypeNoParam start="{" end="}" oneline contained - syntax match javaScriptDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" - syntax match javaScriptDocParam contained "\%(#\|\"\|{\|}\|\w\|\.\|:\|\/\)\+" - syntax region javaScriptDocSeeTag contained matchgroup=javaScriptDocSeeTag start="{" end="}" contains=javaScriptDocTags + syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite + syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite + syntax region jsDocTypeNoParam start="{" end="}" oneline contained + syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" + syntax match jsDocParam contained "\%(#\|\"\|{\|}\|\w\|\.\|:\|\/\)\+" + syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags syntax case match endif "" JSDoc end @@ -69,52 +69,52 @@ endif "" JSDoc end syntax case match "" Syntax in the JavaScript code -syntax match javaScriptSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." -syntax region javaScriptStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=javaScriptSpecial,@htmlPreproc -syntax region javaScriptStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=javaScriptSpecial,@htmlPreproc -syntax region javaScriptRegexpCharClass start=+\[+ end=+\]+ contained -syntax region javaScriptRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@\|\<0[xX]\x\+\>/ -syntax match javaScriptFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ -syntax match javaScriptLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ +syntax match jsSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." +syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc +syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc +syntax region jsRegexpCharClass start=+\[+ end=+\]+ contained +syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@\|\<0[xX]\x\+\>/ +syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ +syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ "" JavaScript Prototype -syntax keyword javaScriptPrototype prototype +syntax keyword jsPrototype prototype "" Program Keywords -syntax keyword javaScriptSource import export -syntax keyword javaScriptCommonJS require module exports -syntax keyword javaScriptType const undefined var void yield -syntax keyword javaScriptOperator delete new in instanceof let typeof -syntax keyword javaScriptBoolean true false -syntax keyword javaScriptNull null -syntax keyword javaScriptThis this +syntax keyword jsSource import export +syntax keyword jsCommonJS require module exports +syntax keyword jsType const undefined var void yield +syntax keyword jsOperator delete new in instanceof let typeof +syntax keyword jsBoolean true false +syntax keyword jsNull null +syntax keyword jsThis this "" Statement Keywords -syntax keyword javaScriptConditional if else -syntax keyword javaScriptRepeat do while for -syntax keyword javaScriptBranch break continue switch case default return -syntax keyword javaScriptStatement try catch throw with finally +syntax keyword jsConditional if else +syntax keyword jsRepeat do while for +syntax keyword jsBranch break continue switch case default return +syntax keyword jsStatement try catch throw with finally -syntax keyword javaScriptGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number NaN Object Packages RegExp String Undefined java netscape sun +syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number NaN Object Packages RegExp String Undefined java netscape sun -syntax keyword javaScriptExceptions Error EvalError RangeError ReferenceError SyntaxError TypeError URIError +syntax keyword jsExceptions Error EvalError RangeError ReferenceError SyntaxError TypeError URIError -syntax keyword javaScriptFutureKeys abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public +syntax keyword jsFutureKeys abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public "" DOM/HTML/CSS specified things " DOM2 Objects - syntax keyword javaScriptGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction - syntax keyword javaScriptExceptions DOMException + syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction + syntax keyword jsExceptions DOMException " DOM2 CONSTANT - syntax keyword javaScriptDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR - syntax keyword javaScriptDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE + syntax keyword jsDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR + syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE " HTML events and internal variables syntax case ignore - syntax keyword javaScriptHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize + syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize syntax case match " Follow stuff should be highligh within a special context @@ -123,28 +123,28 @@ syntax keyword javaScriptFutureKeys abstract enum int short boolean export i if exists("javascript_enable_domhtmlcss") " DOM2 things - syntax match javaScriptDomElemAttrs contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/ - syntax match javaScriptDomElemFuncs contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementsByTagName\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=javaScriptParen skipwhite + syntax match jsDomElemAttrs contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/ + syntax match jsDomElemFuncs contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementsByTagName\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=jsParen skipwhite " HTML things - syntax match javaScriptHtmlElemAttrs contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/ - syntax match javaScriptHtmlElemFuncs contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=javaScriptParen skipwhite + syntax match jsHtmlElemAttrs contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/ + syntax match jsHtmlElemFuncs contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=jsParen skipwhite " CSS Styles in JavaScript - syntax keyword javaScriptCssStyles contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition - syntax keyword javaScriptCssStyles contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition - syntax keyword javaScriptCssStyles contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode - syntax keyword javaScriptCssStyles contained bottom height left position right top width zIndex - syntax keyword javaScriptCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout - syntax keyword javaScriptCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop - syntax keyword javaScriptCssStyles contained listStyle listStyleImage listStylePosition listStyleType - syntax keyword javaScriptCssStyles contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat - syntax keyword javaScriptCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType - syntax keyword javaScriptCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText - syntax keyword javaScriptCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor + syntax keyword jsCssStyles contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition + syntax keyword jsCssStyles contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition + syntax keyword jsCssStyles contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode + syntax keyword jsCssStyles contained bottom height left position right top width zIndex + syntax keyword jsCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout + syntax keyword jsCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop + syntax keyword jsCssStyles contained listStyle listStyleImage listStylePosition listStyleType + syntax keyword jsCssStyles contained background backgroundAttachment backgroundColor backgroundImage gackgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat + syntax keyword jsCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType + syntax keyword jsCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText + syntax keyword jsCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor " Highlight ways - syntax match javaScriptDotNotation "\." nextgroup=javaScriptPrototype,javaScriptDomElemAttrs,javaScriptDomElemFuncs,javaScriptHtmlElemAttrs,javaScriptHtmlElemFuncs - syntax match javaScriptDotNotation "\.style\." nextgroup=javaScriptCssStyles + syntax match jsDotNotation "\." nextgroup=jsPrototype,jsDomElemAttrs,jsDomElemFuncs,jsHtmlElemAttrs,jsHtmlElemFuncs + syntax match jsDotNotation "\.style\." nextgroup=jsCssStyles endif "DOM/HTML/CSS @@ -152,34 +152,33 @@ endif "DOM/HTML/CSS "" Code blocks -" there is a name collision with javaScriptExpression in html.vim, hence the use of the '2' here -syntax cluster javaScriptExpression2 contains=javaScriptComment,javaScriptLineComment,javaScriptDocComment,javaScriptStringD,javaScriptStringS,javaScriptRegexpString,javaScriptNumber,javaScriptFloat,javaScriptSource,javaScriptCommonJS,javaScriptThis,javaScriptType,javaScriptOperator,javaScriptBoolean,javaScriptNull,javaScriptFunction,javaScriptGlobalObjects,javaScriptExceptions,javaScriptFutureKeys,javaScriptDomErrNo,javaScriptDomNodeConsts,javaScriptHtmlEvents,javaScriptDotNotation,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError -syntax cluster javaScriptAll contains=@javaScriptExpression2,javaScriptLabel,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptStatement,javaScriptTernaryIf -syntax region javaScriptBracket matchgroup=javaScriptBracket transparent start="\[" end="\]" contains=@javaScriptAll,javaScriptParensErrB,javaScriptParensErrC,javaScriptBracket,javaScriptParen,javaScriptBlock,@htmlPreproc -syntax region javaScriptParen matchgroup=javaScriptParen transparent start="(" end=")" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrC,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc -syntax region javaScriptBlock matchgroup=javaScriptBlock transparent start="{" end="}" contains=@javaScriptAll,javaScriptParensErrA,javaScriptParensErrB,javaScriptParen,javaScriptBracket,javaScriptBlock,@htmlPreproc -syntax region javaScriptTernaryIf matchgroup=javaScriptTernaryIfOperator start=+?+ end=+:+ contains=@javaScriptExpression2 +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsSource,jsCommonJS,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError +syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsStatement,jsTernaryIf +syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc +syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax region jsBlock matchgroup=jsBlock transparent start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression "" catch errors caused by wrong parenthesis -syntax match javaScriptParensError ")\|}\|\]" -syntax match javaScriptParensErrA contained "\]" -syntax match javaScriptParensErrB contained ")" -syntax match javaScriptParensErrC contained "}" +syntax match jsParensError ")\|}\|\]" +syntax match jsParensErrA contained "\]" +syntax match jsParensErrB contained ")" +syntax match jsParensErrC contained "}" if main_syntax == "javascript" syntax sync clear - syntax sync ccomment javaScriptComment minlines=200 - syntax sync match javaScriptHighlight grouphere javaScriptBlock /{/ + syntax sync ccomment jsComment minlines=200 + syntax sync match jsHighlight grouphere jsBlock /{/ endif "" Fold control if exists("b:javascript_fold") - syntax match javaScriptFunction /\/ nextgroup=javaScriptFuncName skipwhite - syntax match javaScriptOpAssign /=\@/ nextgroup=jsFuncName skipwhite + syntax match jsOpAssign /=\@= 508 || !exists("did_javascript_syn_inits") else command -nargs=+ HiLink hi def link endif - HiLink javaScriptComment Comment - HiLink javaScriptLineComment Comment - HiLink javaScriptEnvComment PreProc - HiLink javaScriptDocComment Comment - HiLink javaScriptCommentTodo Todo - HiLink javaScriptCvsTag Function - HiLink javaScriptDocTags Special - HiLink javaScriptDocSeeTag Function - HiLink javaScriptDocType Type - HiLink javaScriptDocTypeNoParam Type - HiLink javaScriptDocParam Label - HiLink javaScriptStringS String - HiLink javaScriptStringD String - HiLink javaScriptTernaryIfOperator Conditional - HiLink javaScriptRegexpString String - HiLink javaScriptRegexpCharClass Character - HiLink javaScriptCharacter Character - HiLink javaScriptPrototype Type - HiLink javaScriptConditional Conditional - HiLink javaScriptBranch Conditional - HiLink javaScriptRepeat Repeat - HiLink javaScriptStatement Statement - HiLink javaScriptFunction Function - HiLink javaScriptError Error - HiLink javaScriptParensError Error - HiLink javaScriptParensErrA Error - HiLink javaScriptParensErrB Error - HiLink javaScriptParensErrC Error - HiLink javaScriptOperator Operator - HiLink javaScriptType Type - HiLink javaScriptThis Type - HiLink javaScriptNull Type - HiLink javaScriptNumber Number - HiLink javaScriptFloat Number - HiLink javaScriptBoolean Boolean - HiLink javaScriptLabel Label - HiLink javaScriptSpecial Special - HiLink javaScriptSource Special - HiLink javaScriptCommonJS Include - HiLink javaScriptGlobalObjects Special - HiLink javaScriptExceptions Special - - HiLink javaScriptDomErrNo Constant - HiLink javaScriptDomNodeConsts Constant - HiLink javaScriptDomElemAttrs Label - HiLink javaScriptDomElemFuncs PreProc - - HiLink javaScriptHtmlEvents Special - HiLink javaScriptHtmlElemAttrs Label - HiLink javaScriptHtmlElemFuncs PreProc - - HiLink javaScriptCssStyles Label + HiLink jsComment Comment + HiLink jsLineComment Comment + HiLink jsEnvComment PreProc + HiLink jsDocComment Comment + HiLink jsCommentTodo Todo + HiLink jsCvsTag Function + HiLink jsDocTags Special + HiLink jsDocSeeTag Function + HiLink jsDocType Type + HiLink jsDocTypeNoParam Type + HiLink jsDocParam Label + HiLink jsStringS String + HiLink jsStringD String + HiLink jsTernaryIfOperator Conditional + HiLink jsRegexpString String + HiLink jsRegexpCharClass Character + HiLink jsCharacter Character + HiLink jsPrototype Type + HiLink jsConditional Conditional + HiLink jsBranch Conditional + HiLink jsRepeat Repeat + HiLink jsStatement Statement + HiLink jsFunction Function + HiLink jsError Error + HiLink jsParensError Error + HiLink jsParensErrA Error + HiLink jsParensErrB Error + HiLink jsParensErrC Error + HiLink jsOperator Operator + HiLink jsType Type + HiLink jsThis Type + HiLink jsNull Type + HiLink jsNumber Number + HiLink jsFloat Number + HiLink jsBoolean Boolean + HiLink jsLabel Label + HiLink jsSpecial Special + HiLink jsSource Special + HiLink jsCommonJS Include + HiLink jsGlobalObjects Special + HiLink jsExceptions Special + + HiLink jsDomErrNo Constant + HiLink jsDomNodeConsts Constant + HiLink jsDomElemAttrs Label + HiLink jsDomElemFuncs PreProc + + HiLink jsHtmlEvents Special + HiLink jsHtmlElemAttrs Label + HiLink jsHtmlElemFuncs PreProc + + HiLink jsCssStyles Label delcommand HiLink endif " Define the htmlJavaScript for HTML syntax html.vim "syntax clear htmlJavaScript -"syntax clear javaScriptExpression -syntax cluster htmlJavaScript contains=@javaScriptAll,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError -syntax cluster javaScriptExpression contains=@javaScriptAll,javaScriptBracket,javaScriptParen,javaScriptBlock,javaScriptParenError,@htmlPreproc +"syntax clear jsExpression +syntax cluster htmlJavaScript contains=@jsAll,jsBracket,jsParen,jsBlock,jsParenError +syntax cluster javaScriptExpression contains=@jsAll,jsBracket,jsParen,jsBlock,jsParenError,@htmlPreproc " Vim's default html.vim highlights all javascript as 'Special' -hi! def link javaScript NONE +hi! def link javaScript NONE let b:current_syntax = "javascript" if main_syntax == 'javascript' unlet main_syntax endif - -" vim: ts=4 From 5bfea9bd0c600224124d36084e9c5e2dab41903f Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Tue, 5 Mar 2013 19:02:14 -0800 Subject: [PATCH 0012/1043] Adds futurekeys to syntax highlighting --- syntax/javascript.vim | 1 + 1 file changed, 1 insertion(+) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index a9a6266f..4890a12e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -232,6 +232,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsCommonJS Include HiLink jsGlobalObjects Special HiLink jsExceptions Special + HiLink jsFutureKeys Special HiLink jsDomErrNo Constant HiLink jsDomNodeConsts Constant From bf639702485e32db84edd49244f5f9dbce29baa0 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Tue, 5 Mar 2013 19:46:04 -0800 Subject: [PATCH 0013/1043] Fixes whitespace nits in indent file --- indent/javascript.vim | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 83e06901..5efe3d74 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -1,10 +1,6 @@ " Vim indent file -" Language: Javascript -" Maintainer: Darrick Wiebe -" URL: http://github.com/pangloss/vim-javascript -" Version: 1.0.0 -" Last Change: August 31, 2009 -" Acknowledgement: Based off of vim-ruby maintained by Nikolai Weibull http://vim-ruby.rubyforge.org +" Language: Javascript +" Acknowledgement: Based off of vim-ruby maintained by Nikolai Weibull http://vim-ruby.rubyforge.org " 0. Initialization {{{1 " ================= @@ -117,11 +113,11 @@ function s:GetMSL(lnum, in_one_line_scope) " flag in_one_line_scope is set to 1 " if a:in_one_line_scope - break + break end let msl_one_line = s:Match(lnum, s:one_line_scope_regex) if msl_one_line == 0 - break + break endif endif let lnum = s:PrevNonBlankNonString(lnum - 1) @@ -202,7 +198,7 @@ function s:ExitingOneLineScope(lnum) else let prev_msl = s:GetMSL(msl - 1, 1) if s:Match(prev_msl, s:one_line_scope_regex) - return prev_msl + return prev_msl endif endif endif @@ -325,6 +321,3 @@ endfunction let &cpo = s:cpo_save unlet s:cpo_save - -" vim:set sw=2 sts=2 ts=8 noet: - From c6cf517c7f8e3ff9defcdcdb724ef7c65f4bef41 Mon Sep 17 00:00:00 2001 From: Mathieu Quinette Date: Thu, 7 Mar 2013 10:53:15 +0100 Subject: [PATCH 0014/1043] Correct the fix. --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 481be853..1521339e 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -42,7 +42,7 @@ let s:syng_string = 'regex\c' let s:syng_multiline = 'comment\c' " Regex of syntax group names that are line comment. -let s:syng_linecom = 'linecomment' +let s:syng_linecom = 'linecomment\c' " Expression used to check whether we should skip a match with searchpair(). let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'" From 4dee33f79486b805d566eaebe60f022f2af18ee6 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Thu, 7 Mar 2013 16:42:11 -0800 Subject: [PATCH 0015/1043] Adds multiple var indent and comma-first style * Multiple variable indentation now possible thanks to the efforts of @utyf Some modifications were made to ensure that when coding without semicolons the indentation would be preserved/adjusted. Also multiline array, objects, and functions are now possible. * Adds support for comma-first style indentation. Now when using comma-first style the indentation is automatically adjusted once you press the comma. The indentation will always dedent on carriage return. Examples: var a = 1, b = 2, c = 3 // dedents var a = 1 , b = 2 // when pressing the comma it indents , c = 3 // dedents Fixes #53 --- indent/javascript.vim | 108 ++++++++++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 36 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 61796781..e0cc13ac 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -15,7 +15,7 @@ setlocal nosmartindent " Now, set up our indentation expression and keys that trigger it. setlocal indentexpr=GetJavascriptIndent() -setlocal indentkeys=0{,0},0),0],!^F,o,O,e +setlocal indentkeys=0{,0},0),0],0\,,!^F,o,O,e " Only define the function once. if exists("*GetJavascriptIndent") @@ -55,7 +55,9 @@ let s:one_line_scope_regex = '\<\%(if\|else\|for\|while\)\>[^{;]*' . s:line_term let s:block_regex = '\%({\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term " Var string -let s:var_regex = '\s*var\s[^;]\+$' +let s:var_regex = '\s*var\(.*\),$' + +let s:comma_first = '^\s*,' " 2. Auxiliary Functions {{{1 " ====================== @@ -128,48 +130,55 @@ function s:GetMSL(lnum, in_one_line_scope) return msl endfunction +function s:RemoveTrailingComments(content) + let single = '\/\/\(.*\)\s*$' + let multi = '\/\*\(.*\)\*\/\s*$' + return substitute(substitute(a:content, single, '', ''), multi, '', '') +endfunction + " Find if the string is inside var statement (but not the first string) function s:InVarStatement(lnum) - let lnum = s:PrevNonBlankNonString(a:lnum - 1) - - while lnum > 0 - let line = getline(lnum) - - " if line has var statement, return it's number - if ( line =~ s:var_regex ) - return lnum - endif + let lnum = s:PrevNonBlankNonString(a:lnum - 1) - " if line has brackets or semi-colon, return 0 - if ( line =~ '[{};]' ) - return 0 - endif + while lnum > 0 + let line = getline(lnum) - let lnum = s:PrevNonBlankNonString(lnum - 1) - endwhile + " if line has var statement, return its number + if (line =~ s:var_regex) + return lnum + endif - return 0 + let lnum = s:PrevNonBlankNonString(lnum - 1) + endwhile + + return 0 endfunction " Find line above with beginning of the var statement or returns 0 if it's not " this statement function s:GetVarIndent(lnum) - let lvar = s:InVarStatement(a:lnum) - let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1) - let prev_lvar = s:InVarStatement(prev_lnum) + let lvar = s:InVarStatement(a:lnum) + let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1) + let prev_lvar = s:InVarStatement(prev_lnum) - if ( lvar ) - return indent(lvar) + &sw - endif + if (lvar) + let line = s:RemoveTrailingComments(getline(prev_lnum)) - if ( prev_lvar ) - return indent(prev_lvar) + " if the line doesn't end in a comma, return to regular indent + if (line !~ ',\s*$') + return indent(lvar) + else + return indent(lvar) + &sw endif + endif + + if (prev_lvar) + return indent(prev_lvar) + endif - return 'null' - + return 'null' endfunction - + " Check if line 'lnum' has more opening brackets than closing ones. function s:LineHasOpeningBrackets(lnum) @@ -264,16 +273,39 @@ function GetJavascriptIndent() " 3.2. Work on the current line {{{2 " ----------------------------- + let ind = -1 " Get the current line. let line = getline(v:lnum) - let ind = -1 + " previous nonblank line number + let prevline = prevnonblank(v:lnum - 1) " If we got a closing bracket on an empty line, find its match and indent " according to it. For parentheses we indent to its column - 1, for the " others we indent to the containing line's MSL's level. Return -1 if fail. - let col = matchend(line, '^\s*[]})]') + let col = matchend(line, '^\s*[],})]') if col > 0 && !s:IsInStringOrComment(v:lnum, col) call cursor(v:lnum, col) + + let lvar = s:InVarStatement(v:lnum) + if lvar + let prevline_contents = s:RemoveTrailingComments(getline(prevline)) + + " check for comma first + if (line[col - 1] =~ ',') + " if the previous line ends in comma or semicolon don't indent + if (prevline_contents =~ '[;,]\s*$') + return indent(s:GetMSL(line('.'), 0)) + " get previous line indent, if it's comma first return prevline indent + elseif (prevline_contents =~ s:comma_first) + return indent(prevline) + " otherwise we indent 1 level + else + return indent(prevline) + &sw + endif + endif + endif + + let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2) if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0 if line[col-1]==')' && col('.') != col('$') - 1 @@ -285,12 +317,17 @@ function GetJavascriptIndent() return ind endif + " If the line is comma first, dedent 1 level + if (getline(prevline) =~ s:comma_first) + return indent(prevline) - &sw + endif + " If we are in a multi-line comment, cindent does the right thing. if s:IsInMultilineComment(v:lnum, 1) return cindent(v:lnum) endif - " Work with var statements' blocks + " Check for multiple var assignments let var_indent = s:GetVarIndent(v:lnum) if var_indent != 'null' return var_indent @@ -302,16 +339,15 @@ function GetJavascriptIndent() " If the line is empty and the previous nonblank line was a multi-line " comment, use that comment's indent. Deduct one char to account for the " space in ' */'. - let nonblank_lnum = prevnonblank(v:lnum - 1) - if line =~ '^\s*$' && s:IsInMultilineComment(nonblank_lnum, 1) - return indent(nonblank_lnum) - 1 + if line =~ '^\s*$' && s:IsInMultilineComment(prevline, 1) + return indent(prevline) - 1 endif " Find a non-blank, non-multi-line string line above the current line. let lnum = s:PrevNonBlankNonString(v:lnum - 1) " If the line is empty and inside a string, use the previous line. - if line =~ '^\s*$' && lnum != nonblank_lnum + if line =~ '^\s*$' && lnum != prevline return indent(prevnonblank(v:lnum)) endif From 870ffca4738f0de1772291c580bb17f852ba36ce Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Thu, 7 Mar 2013 22:07:18 -0800 Subject: [PATCH 0016/1043] Fixes some cases of multiple var indentation * Syntax fix * Indent 2 (twice) for vars Fixes #3 --- indent/javascript.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 2b90114c..2a6b33df 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -176,7 +176,7 @@ function s:GetVarIndent(lnum) if (line !~ ',\s*$') return indent(lvar) else - return indent(lvar) + &sw + return indent(lvar) + &sw * 2 endif endif @@ -337,7 +337,7 @@ function GetJavascriptIndent() " Check for multiple var assignments let var_indent = s:GetVarIndent(v:lnum) - if var_indent != 'null' + if var_indent !~ 'null' return var_indent endif From 57daa9e1ae0a61330d43e12f5e2b02318ad18e80 Mon Sep 17 00:00:00 2001 From: Joel Holdbrooks Date: Mon, 11 Mar 2013 16:39:48 -0700 Subject: [PATCH 0017/1043] Add new regular expression syntax groups This adds new syntax ids for matching boundaries, back references, zero-width modifiers, quantifiers, and grouping. Also, jsSpecial has been patched to support null and control characters. --- syntax/javascript.vim | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 4890a12e..9a884ab7 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -69,11 +69,18 @@ endif "" JSDoc end syntax case match "" Syntax in the JavaScript code -syntax match jsSpecial "\\\d\d\d\|\\x\x\{2\}\|\\u\x\{4\}\|\\." +syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc syntax region jsRegexpCharClass start=+\[+ end=+\]+ contained -syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@]" contained +syntax cluster jsRegexpSpecial contains=jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod +syntax region jsRegexpGroup start="\\\@\|\<0[xX]\x\+\>/ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ @@ -206,6 +213,12 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsStringD String HiLink jsTernaryIfOperator Conditional HiLink jsRegexpString String + HiLink jsRegexpBoundary SpecialChar + HiLink jsRegexpQuantifier SpecialChar + HiLink jsRegexpOr Conditional + HiLink jsRegexpMod SpecialChar + HiLink jsRegexpBackRef SpecialChar + HiLink jsRegexpGroup jsRegexpString HiLink jsRegexpCharClass Character HiLink jsCharacter Character HiLink jsPrototype Type From df6bed93b756e2637f880c0608f5ada41a97d271 Mon Sep 17 00:00:00 2001 From: Joel Holdbrooks Date: Mon, 11 Mar 2013 20:02:00 -0700 Subject: [PATCH 0018/1043] Contain jsRegexpOr --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 9a884ab7..f9a199e1 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -76,7 +76,7 @@ syntax region jsRegexpCharClass start=+\[+ end=+\]+ contained syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained syntax match jsRegexpQuantifier "\v\\@]" contained syntax cluster jsRegexpSpecial contains=jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod syntax region jsRegexpGroup start="\\\@ Date: Fri, 8 Mar 2013 17:36:00 -0800 Subject: [PATCH 0019/1043] Adds fixes for multi var indent for comma first Also comments out the multi var indent --- indent/javascript.vim | 57 +++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 2a6b33df..608257bf 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -28,6 +28,8 @@ set cpo&vim " 1. Variables {{{1 " ============ +let s:js_keywords = '^\s*\(break\|case\|catch\|continue\|debugger\|default\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)' + " Regex of syntax group names that are or delimit string or are comments. let s:syng_strcom = 'string\|regex\|comment\c' @@ -57,10 +59,10 @@ let s:one_line_scope_regex = '\<\%(if\|else\|for\|while\)\>[^{;]*' . s:line_term " Regex that defines blocks. let s:block_regex = '\%({\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term -" Var string -let s:var_regex = '\s*var\(.*\),$' +let s:var_stmt = '^\s*var' let s:comma_first = '^\s*,' +let s:comma_last = ',\s*$' " 2. Auxiliary Functions {{{1 " ====================== @@ -145,46 +147,53 @@ function s:RemoveTrailingComments(content) endfunction " Find if the string is inside var statement (but not the first string) -function s:InVarStatement(lnum) +function s:InMultiVarStatement(lnum) let lnum = s:PrevNonBlankNonString(a:lnum - 1) +" let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name') + + " loop through previous expressions to find a var statement while lnum > 0 let line = getline(lnum) - " if line has var statement, return its number - if (line =~ s:var_regex) - return lnum + " if the line is a js keyword + if (line =~ s:js_keywords) + " check if the line is a var stmt + " if the line has a comma first or comma last then we can assume that we + " are in a multiple var statement + if (line =~ s:var_stmt) + return lnum + endif + + " other js keywords, not a var + return 0 endif let lnum = s:PrevNonBlankNonString(lnum - 1) endwhile + " beginning of program, not a var return 0 endfunction " Find line above with beginning of the var statement or returns 0 if it's not " this statement function s:GetVarIndent(lnum) - let lvar = s:InVarStatement(a:lnum) + let lvar = s:InMultiVarStatement(a:lnum) let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1) - let prev_lvar = s:InVarStatement(prev_lnum) - if (lvar) + if lvar let line = s:RemoveTrailingComments(getline(prev_lnum)) - " if the line doesn't end in a comma, return to regular indent - if (line !~ ',\s*$') - return indent(lvar) + " if the previous line doesn't end in a comma, return to regular indent + if (line !~ s:comma_last) + return indent(prev_lnum) - &sw else - return indent(lvar) + &sw * 2 + return indent(lvar) + &sw endif endif - if (prev_lvar) - return indent(prev_lvar) - endif - - return 'null' + return -1 endfunction @@ -294,7 +303,7 @@ function GetJavascriptIndent() if col > 0 && !s:IsInStringOrComment(v:lnum, col) call cursor(v:lnum, col) - let lvar = s:InVarStatement(v:lnum) + let lvar = s:InMultiVarStatement(v:lnum) if lvar let prevline_contents = s:RemoveTrailingComments(getline(prevline)) @@ -308,7 +317,7 @@ function GetJavascriptIndent() return indent(prevline) " otherwise we indent 1 level else - return indent(prevline) + &sw + return indent(lvar) + &sw endif endif endif @@ -336,10 +345,10 @@ function GetJavascriptIndent() endif " Check for multiple var assignments - let var_indent = s:GetVarIndent(v:lnum) - if var_indent !~ 'null' - return var_indent - endif +" let var_indent = s:GetVarIndent(v:lnum) +" if var_indent >= 0 +" return var_indent +" endif " 3.3. Work on the previous line. {{{2 " ------------------------------- From 6049b8f79a23d391ff6d6712efd4ab551f8df51a Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Mon, 11 Mar 2013 18:36:00 -0700 Subject: [PATCH 0020/1043] Adds concealing to some JS statements --- syntax/javascript.vim | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 4890a12e..38dd8535 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -87,13 +87,14 @@ syntax keyword jsCommonJS require module exports syntax keyword jsType const undefined var void yield syntax keyword jsOperator delete new in instanceof let typeof syntax keyword jsBoolean true false -syntax keyword jsNull null -syntax keyword jsThis this +syntax keyword jsNull null conceal cchar=ø +syntax keyword jsThis this conceal cchar=@ "" Statement Keywords syntax keyword jsConditional if else syntax keyword jsRepeat do while for -syntax keyword jsBranch break continue switch case default return +syntax keyword jsBranch break continue switch case default +syntax keyword jsReturn return conceal cchar=⇚ syntax keyword jsStatement try catch throw with finally syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number NaN Object Packages RegExp String Undefined java netscape sun @@ -153,7 +154,7 @@ endif "DOM/HTML/CSS "" Code blocks syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsSource,jsCommonJS,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError -syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsStatement,jsTernaryIf +syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc syntax region jsBlock matchgroup=jsBlock transparent start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -173,14 +174,16 @@ endif "" Fold control if exists("b:javascript_fold") - syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite + syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite conceal cchar=ƒ syntax match jsOpAssign /=\@= 508 || !exists("did_javascript_syn_inits") HiLink jsPrototype Type HiLink jsConditional Conditional HiLink jsBranch Conditional + HiLink jsReturn Type HiLink jsRepeat Repeat HiLink jsStatement Statement HiLink jsFunction Function From 0329a2499cf158b526f06d1b55400abd90d2778b Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Wed, 13 Mar 2013 22:23:09 -0700 Subject: [PATCH 0021/1043] Makes the conceal syntax optional To use syntax concealing one must now put this line in their `.vimrc` let g:javascript_conceal = 1 Fixes #72 --- syntax/javascript.vim | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 38dd8535..af0d6538 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -16,6 +16,10 @@ if !exists("main_syntax") let main_syntax = 'javascript' endif +if !exists('g:javascript_conceal') + let g:javascript_conceal = 0 +endif + "" Drop fold if it is set but VIM doesn't support it. let b:javascript_fold='true' if version < 600 " Don't support the old version @@ -87,14 +91,21 @@ syntax keyword jsCommonJS require module exports syntax keyword jsType const undefined var void yield syntax keyword jsOperator delete new in instanceof let typeof syntax keyword jsBoolean true false -syntax keyword jsNull null conceal cchar=ø -syntax keyword jsThis this conceal cchar=@ + +if g:javascript_conceal == 1 + syntax keyword jsNull null conceal cchar=ø + syntax keyword jsThis this conceal cchar=@ + syntax keyword jsReturn return conceal cchar=⇚ +else + syntax keyword jsNull null + syntax keyword jsThis this + syntax keyword jsReturn return +endif "" Statement Keywords syntax keyword jsConditional if else syntax keyword jsRepeat do while for syntax keyword jsBranch break continue switch case default -syntax keyword jsReturn return conceal cchar=⇚ syntax keyword jsStatement try catch throw with finally syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number NaN Object Packages RegExp String Undefined java netscape sun @@ -174,12 +185,21 @@ endif "" Fold control if exists("b:javascript_fold") + if g:javascript_conceal == 1 syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite conceal cchar=ƒ - syntax match jsOpAssign /=\@/ nextgroup=jsFuncName skipwhite + endif + + syntax match jsOpAssign /=\@ Date: Sun, 12 May 2013 00:34:50 +0800 Subject: [PATCH 0022/1043] detect javascript from shbang --- ftdetect/javascript.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ftdetect/javascript.vim b/ftdetect/javascript.vim index 6ddc900d..805e1978 100644 --- a/ftdetect/javascript.vim +++ b/ftdetect/javascript.vim @@ -2,3 +2,10 @@ au BufNewFile,BufRead *.js setf javascript au BufNewFile,BufRead *.jsm setf javascript au BufNewFile,BufRead *.json setf javascript au BufNewFile,BufRead Jakefile setf javascript + +fun! s:SelectJavascript() + if getline(1) =~# '^#!.*/bin/env\s\+node\>' + set ft=javascript + endif +endfun +au BufNewFile,BufRead * call s:SelectJavascript() From caaa7ee42b835b82513e43f46d72b39b6e9263ca Mon Sep 17 00:00:00 2001 From: Brian Arnold Date: Wed, 22 May 2013 00:13:43 -0500 Subject: [PATCH 0023/1043] Fixing multiline differentiation, fixes #77 This patch is not directly mine, it is from @drslump on issue #77 - see https://github.com/pangloss/vim-javascript/issues/77#issuecomment-18255638 for details In testing, this change works beautifully to fix #77 --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 608257bf..e305fa9a 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -79,7 +79,7 @@ endfunction " Check if the character at lnum:col is inside a multi-line comment. function s:IsInMultilineComment(lnum, col) - return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline + return !IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline endfunction " Check if the character at lnum:col is a line comment. From 575602dca734330a6d8f8c7f0725de14ed6f7676 Mon Sep 17 00:00:00 2001 From: kevnchu Date: Fri, 7 Jun 2013 14:08:53 -0700 Subject: [PATCH 0024/1043] Fixed multiline comment indentation. --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index e305fa9a..42966418 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -79,7 +79,7 @@ endfunction " Check if the character at lnum:col is inside a multi-line comment. function s:IsInMultilineComment(lnum, col) - return !IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline + return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline endfunction " Check if the character at lnum:col is a line comment. From 169e10b1eab91d8028444e20c51002de52f81648 Mon Sep 17 00:00:00 2001 From: mwcz Date: Wed, 19 Jun 2013 14:20:55 -0400 Subject: [PATCH 0025/1043] add jsdoc tags from jsdoc v3.2-dev --- syntax/javascript.vim | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 36bc699e..857b088c 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -50,15 +50,15 @@ if !exists("javascript_ignore_javaScriptdoc") syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold " tags containing a param - syntax match jsDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|exception\|exports\|extends\|file\|member\|memberOf\|methodOf\|module\|name\|namespace\|optional\|requires\|title\|throws\|version\)\>" nextgroup=jsDocParam skipwhite + syntax match jsDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|methodOf\|mixes\|module\|name\|namespace\|optional\|requires\|title\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite " tags containing type and param syntax match jsDocTags contained "@\(argument\|param\|property\)\>" nextgroup=jsDocType skipwhite " tags containing type but no param - syntax match jsDocTags contained "@\(type\|return\|returns\|api\)\>" nextgroup=jsDocTypeNoParam skipwhite + syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\|api\)\>" nextgroup=jsDocTypeNoParam skipwhite " tags containing references syntax match jsDocTags contained "@\(lends\|link\|see\)\>" nextgroup=jsDocSeeTag skipwhite " other tags (no extra syntax) - syntax match jsDocTags contained "@\(access\|addon\|alias\|author\|beta\|constant\|const\|constructor\|copyright\|deprecated\|description\|event\|example\|exec\|field\|fileOverview\|fileoverview\|function\|global\|ignore\|inner\|license\|overview\|private\|protected\|project\|public\|readonly\|since\|static\)\>" + syntax match jsDocTags contained "@\(abstract\|access\|addon\|alias\|author\|beta\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|exec\|field\|fileOverview\|fileoverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|project\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite From 3f7a3e55040d8d62f6b5705fc5c48bb9655266d5 Mon Sep 17 00:00:00 2001 From: mwcz Date: Wed, 19 Jun 2013 15:00:59 -0400 Subject: [PATCH 0026/1043] add missing @arg tag --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 857b088c..6dbb536e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -52,7 +52,7 @@ if !exists("javascript_ignore_javaScriptdoc") " tags containing a param syntax match jsDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|methodOf\|mixes\|module\|name\|namespace\|optional\|requires\|title\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite " tags containing type and param - syntax match jsDocTags contained "@\(argument\|param\|property\)\>" nextgroup=jsDocType skipwhite + syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite " tags containing type but no param syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\|api\)\>" nextgroup=jsDocTypeNoParam skipwhite " tags containing references From 67a7a2f955adcf6218047f620c740b1c5ac4378b Mon Sep 17 00:00:00 2001 From: mwcz Date: Wed, 19 Jun 2013 15:08:01 -0400 Subject: [PATCH 0027/1043] remove deprecated jsdoc tags --- syntax/javascript.vim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 6dbb536e..b4d6fd7f 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -50,15 +50,15 @@ if !exists("javascript_ignore_javaScriptdoc") syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold " tags containing a param - syntax match jsDocTags contained "@\(augments\|base\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|methodOf\|mixes\|module\|name\|namespace\|optional\|requires\|title\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite + syntax match jsDocTags contained "@\(augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite " tags containing type and param syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite " tags containing type but no param - syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\|api\)\>" nextgroup=jsDocTypeNoParam skipwhite + syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite " tags containing references - syntax match jsDocTags contained "@\(lends\|link\|see\)\>" nextgroup=jsDocSeeTag skipwhite + syntax match jsDocTags contained "@\(lends\|see\)\>" nextgroup=jsDocSeeTag skipwhite " other tags (no extra syntax) - syntax match jsDocTags contained "@\(abstract\|access\|addon\|alias\|author\|beta\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|exec\|field\|fileOverview\|fileoverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|project\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" + syntax match jsDocTags contained "@\(abstract\|access\|alias\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|fileOverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite From 336c41eb062d55fdda475aaee71086482f40554b Mon Sep 17 00:00:00 2001 From: mwcz Date: Wed, 19 Jun 2013 17:48:18 -0400 Subject: [PATCH 0028/1043] highlight the parameter of the @alias tag (back-incompat) version --- syntax/javascript.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index b4d6fd7f..7523559a 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -50,7 +50,7 @@ if !exists("javascript_ignore_javaScriptdoc") syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold " tags containing a param - syntax match jsDocTags contained "@\(augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite + syntax match jsDocTags contained "@\(alias\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite " tags containing type and param syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite " tags containing type but no param @@ -58,7 +58,7 @@ if !exists("javascript_ignore_javaScriptdoc") " tags containing references syntax match jsDocTags contained "@\(lends\|see\)\>" nextgroup=jsDocSeeTag skipwhite " other tags (no extra syntax) - syntax match jsDocTags contained "@\(abstract\|access\|alias\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|fileOverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" + syntax match jsDocTags contained "@\(abstract\|access\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|fileOverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite From 56dea5e123fb3111c505fc7de7ea108e76c2db21 Mon Sep 17 00:00:00 2001 From: Robin Allen Date: Sun, 23 Jun 2013 13:04:29 +0100 Subject: [PATCH 0029/1043] Fix case where line ends with [ within ( The opening square bracket would be treated as if it were an argument to a function call delimited by the enclosing parentheses. This adds square brackets to the already-existing special case which handles braces in this context. Examples: 1. var a = [ x but: var a = ([ x 2. var a = fn({ // braces already handled correctly x: y but: var a = fn([ x --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 42966418..09abd0c8 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -57,7 +57,7 @@ let s:msl_regex = '\%([\\*+/.:([]\|\%(<%\)\@[^{;]*' . s:line_term " Regex that defines blocks. -let s:block_regex = '\%({\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term +let s:block_regex = '\%([{[]\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term let s:var_stmt = '^\s*var' From 873da1385d6d33483860ec6a6bd56879f6f61010 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:06:18 -0400 Subject: [PATCH 0030/1043] Remove `jsSource` and `jsCommonJS`; not part of JavaScript --- syntax/javascript.vim | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 36bc699e..2c9b419b 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -93,8 +93,6 @@ syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ syntax keyword jsPrototype prototype "" Program Keywords -syntax keyword jsSource import export -syntax keyword jsCommonJS require module exports syntax keyword jsType const undefined var void yield syntax keyword jsOperator delete new in instanceof let typeof syntax keyword jsBoolean true false @@ -171,7 +169,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsSource,jsCommonJS,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -265,8 +263,6 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsBoolean Boolean HiLink jsLabel Label HiLink jsSpecial Special - HiLink jsSource Special - HiLink jsCommonJS Include HiLink jsGlobalObjects Special HiLink jsExceptions Special HiLink jsFutureKeys Special From a4373e6f0293b74f92d8af500713247dd25594aa Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 10:55:37 -0400 Subject: [PATCH 0031/1043] Add `jsIdentifier` --- syntax/javascript.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 2c9b419b..539d10e2 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -73,6 +73,7 @@ endif "" JSDoc end syntax case match "" Syntax in the JavaScript code +syntax match jsIdentifier /\k\+/ syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc @@ -169,7 +170,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -219,6 +220,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") else command -nargs=+ HiLink hi def link endif + HiLink jsIdentifier Identifier HiLink jsComment Comment HiLink jsLineComment Comment HiLink jsEnvComment PreProc From c59b387e05b8679d5267b9501fd668bf7a2eedb2 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 10:57:54 -0400 Subject: [PATCH 0032/1043] Add `jsFuncCall` --- syntax/javascript.vim | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 539d10e2..367499c1 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -74,6 +74,7 @@ syntax case match "" Syntax in the JavaScript code syntax match jsIdentifier /\k\+/ +syntax match jsFuncCall /\k\+\%(\s*(\)\@=/ syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc @@ -170,7 +171,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -251,6 +252,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsRepeat Repeat HiLink jsStatement Statement HiLink jsFunction Function + HiLink jsFuncCall Function HiLink jsError Error HiLink jsParensError Error HiLink jsParensErrA Error From dbf6adbe7427551365cb2c61f8e9bcbb0fa88625 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 10:59:49 -0400 Subject: [PATCH 0033/1043] Remove `-` from valid characters for `jsLabel` --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 367499c1..f46f588c 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -89,7 +89,7 @@ syntax region jsRegexpGroup start="\\\@\|\<0[xX]\x\+\>/ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ -syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$\-]*\(\s*:\)\@=/ +syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\)\@=/ "" JavaScript Prototype syntax keyword jsPrototype prototype From c242ceecd073426d1ce137f279189c6e1abac64b Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:00:37 -0400 Subject: [PATCH 0034/1043] Link `jsLabel` to `Identifier` highlight group --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f46f588c..f6921f5e 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -265,7 +265,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsNumber Number HiLink jsFloat Number HiLink jsBoolean Boolean - HiLink jsLabel Label + HiLink jsLabel Identifier HiLink jsSpecial Special HiLink jsGlobalObjects Special HiLink jsExceptions Special From 80ee77bc7dc6e51ec78f4b6a72bccf6284eb0ec9 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:03:54 -0400 Subject: [PATCH 0035/1043] Add `jsNoise` so users can subdue noisy syntax clutter --- syntax/javascript.vim | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f6921f5e..30c43299 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -90,6 +90,7 @@ syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\] syntax match jsNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\)\@=/ +syntax match jsNoise /\%(:\|,\|\;\|\.\)/ "" JavaScript Prototype syntax keyword jsPrototype prototype @@ -172,10 +173,10 @@ endif "DOM/HTML/CSS "" Code blocks syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall -syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf -syntax region jsBracket matchgroup=jsBracket transparent start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc -syntax region jsParen matchgroup=jsParen transparent start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc -syntax region jsBlock matchgroup=jsBlock transparent start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise +syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc +syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax region jsBlock matchgroup=Noise start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression "" catch errors caused by wrong parenthesis @@ -266,6 +267,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsFloat Number HiLink jsBoolean Boolean HiLink jsLabel Identifier + HiLink jsNoise Noise HiLink jsSpecial Special HiLink jsGlobalObjects Special HiLink jsExceptions Special From 4fcf5ce57f4fa0807feebffe4f75a70fad562f21 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:09:43 -0400 Subject: [PATCH 0036/1043] Update `jsType` and `jsOperator` - Move `void` and `yield` from `jsType` to `jsOperator` - Remove `undefined` from `jsType` - Add `jsUndefined` keyword; link to `Constant` highlight group - Add logical / comparison / assignment operators to `jsOperator` --- syntax/javascript.vim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 30c43299..c6ae3c0a 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -96,18 +96,21 @@ syntax match jsNoise /\%(:\|,\|\;\|\.\)/ syntax keyword jsPrototype prototype "" Program Keywords -syntax keyword jsType const undefined var void yield -syntax keyword jsOperator delete new in instanceof let typeof +syntax keyword jsType const var function +syntax keyword jsOperator delete new in instanceof let typeof void yield +syntax match jsOperator /\(!\|||\|&&\|+\|-\|<\|>\|=\)/ syntax keyword jsBoolean true false if g:javascript_conceal == 1 syntax keyword jsNull null conceal cchar=ø syntax keyword jsThis this conceal cchar=@ syntax keyword jsReturn return conceal cchar=⇚ + syntax keyword jsUndefined undefined conceal cchar=¿ else syntax keyword jsNull null syntax keyword jsThis this syntax keyword jsReturn return + syntax keyword jsUndefined undefined endif "" Statement Keywords @@ -172,7 +175,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -263,6 +266,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsType Type HiLink jsThis Type HiLink jsNull Type + HiLink jsUndefined Constant HiLink jsNumber Number HiLink jsFloat Number HiLink jsBoolean Boolean From 71e9619b8b36c35a9e2b4896e3fe0625aa9b2440 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:14:35 -0400 Subject: [PATCH 0037/1043] Add `jsNan` keyword; link to `Constant` highlight group --- syntax/javascript.vim | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index c6ae3c0a..256aaf5b 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -106,11 +106,13 @@ if g:javascript_conceal == 1 syntax keyword jsThis this conceal cchar=@ syntax keyword jsReturn return conceal cchar=⇚ syntax keyword jsUndefined undefined conceal cchar=¿ + syntax keyword jsNan NaN conceal cchar=ℕ else syntax keyword jsNull null syntax keyword jsThis this syntax keyword jsReturn return syntax keyword jsUndefined undefined + syntax keyword jsNan NaN endif "" Statement Keywords @@ -119,7 +121,7 @@ syntax keyword jsRepeat do while for syntax keyword jsBranch break continue switch case default syntax keyword jsStatement try catch throw with finally -syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number NaN Object Packages RegExp String Undefined java netscape sun +syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number Object Packages RegExp String Undefined java netscape sun syntax keyword jsExceptions Error EvalError RangeError ReferenceError SyntaxError TypeError URIError @@ -175,7 +177,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -266,6 +268,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsType Type HiLink jsThis Type HiLink jsNull Type + HiLink jsNan Constant HiLink jsUndefined Constant HiLink jsNumber Number HiLink jsFloat Number From fb677cd26a5a339615d8f3f503701fd763447040 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 23 Jul 2013 11:18:32 -0400 Subject: [PATCH 0038/1043] Refactor `jsFunction`/`jsFuncName`/`jsFuncBlock`/`jsOpAssign` - Fix messy nested logic regarding `b:javasript_fold` by moving some stuff out of if statements - Change `jsFuncName` to match only the function name --- syntax/javascript.vim | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 256aaf5b..364cfd82 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -196,26 +196,19 @@ if main_syntax == "javascript" syntax sync match jsHighlight grouphere jsBlock /{/ endif -"" Fold control -if exists("b:javascript_fold") - if g:javascript_conceal == 1 - syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite conceal cchar=ƒ - else - syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite - endif - - syntax match jsOpAssign /=\@/ nextgroup=jsFuncName skipwhite conceal cchar=ƒ else - if g:javascript_conceal == 1 - syntax keyword jsFunction function conceal cchar=ƒ - else - syntax keyword jsFunction function - endif + syntax match jsFunction /\/ nextgroup=jsFuncName skipwhite endif +syntax match jsOpAssign /=\@ Date: Tue, 23 Jul 2013 11:20:36 -0400 Subject: [PATCH 0039/1043] Change highlight links to be more semantically correct - `jsReturn` links to `Statement` - `jsFunction` links to `Type` - `jsFuncName` links to `Function` - `jsThis` links to `Special` - `jsNull` links to `Constant` --- syntax/javascript.vim | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 364cfd82..5bb808ac 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -247,10 +247,11 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsPrototype Type HiLink jsConditional Conditional HiLink jsBranch Conditional - HiLink jsReturn Type + HiLink jsReturn Statement HiLink jsRepeat Repeat HiLink jsStatement Statement - HiLink jsFunction Function + HiLink jsFunction Type + HiLink jsFuncName Function HiLink jsFuncCall Function HiLink jsError Error HiLink jsParensError Error @@ -259,9 +260,9 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsParensErrC Error HiLink jsOperator Operator HiLink jsType Type - HiLink jsThis Type - HiLink jsNull Type + HiLink jsThis Special HiLink jsNan Constant + HiLink jsNull Constant HiLink jsUndefined Constant HiLink jsNumber Number HiLink jsFloat Number From df84f57564217dcb9ebd106afb3222a822a0867c Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Wed, 24 Jul 2013 14:59:51 -0400 Subject: [PATCH 0040/1043] Move jsNoise higher up --- syntax/javascript.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 5bb808ac..b78139a2 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -31,6 +31,8 @@ setlocal iskeyword+=$ syntax sync fromstart +syntax match jsNoise /\%(:\|,\|\;\|\.\)/ + "" JavaScript comments syntax keyword jsCommentTodo TODO FIXME XXX TBD contained syntax region jsLineComment start=+\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell @@ -90,7 +92,6 @@ syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\] syntax match jsNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\)\@=/ -syntax match jsNoise /\%(:\|,\|\;\|\.\)/ "" JavaScript Prototype syntax keyword jsPrototype prototype From b53a6fdf386371cb78ee9ca1efdfbbc3b1f97b6d Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Wed, 24 Jul 2013 15:18:27 -0400 Subject: [PATCH 0041/1043] Refactor `Statement` family - Reorder to match `:help :hi` list - Move `try`, `catch`, `throw`, and `finally` to `jsException` - Move `with`, `new`, and `in` to `jsKeyword` - Rename `jsBranch` to `jsLabel`; remove old, unnecessary `jsLabel` - Move `yield`, `break`, and `continue` to `jsStatement` - Move `switch` to `jsConditional` --- syntax/javascript.vim | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index b78139a2..a5fecaf1 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -91,14 +91,13 @@ syntax region jsRegexpGroup start="\\\@\|\<0[xX]\x\+\>/ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ -syntax match jsLabel /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\)\@=/ "" JavaScript Prototype syntax keyword jsPrototype prototype "" Program Keywords syntax keyword jsType const var function -syntax keyword jsOperator delete new in instanceof let typeof void yield +syntax keyword jsOperator delete instanceof typeof void syntax match jsOperator /\(!\|||\|&&\|+\|-\|<\|>\|=\)/ syntax keyword jsBoolean true false @@ -117,10 +116,12 @@ else endif "" Statement Keywords -syntax keyword jsConditional if else +syntax keyword jsStatement yield break continue +syntax keyword jsConditional if else switch syntax keyword jsRepeat do while for -syntax keyword jsBranch break continue switch case default -syntax keyword jsStatement try catch throw with finally +syntax keyword jsLabel case default +syntax keyword jsKeyword new in with +syntax keyword jsException try catch throw finally syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number Object Packages RegExp String Undefined java netscape sun @@ -178,8 +179,8 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan -syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword +syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc syntax region jsBlock matchgroup=Noise start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -248,9 +249,12 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsPrototype Type HiLink jsConditional Conditional HiLink jsBranch Conditional + HiLink jsLabel Label HiLink jsReturn Statement HiLink jsRepeat Repeat HiLink jsStatement Statement + HiLink jsException Exception + HiLink jsKeyword Keyword HiLink jsFunction Type HiLink jsFuncName Function HiLink jsFuncCall Function @@ -268,7 +272,6 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsNumber Number HiLink jsFloat Number HiLink jsBoolean Boolean - HiLink jsLabel Identifier HiLink jsNoise Noise HiLink jsSpecial Special HiLink jsGlobalObjects Special From 16aedfcb35db46d5becf076681cfb4ea6a32b3e0 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Wed, 24 Jul 2013 15:25:40 -0400 Subject: [PATCH 0042/1043] Refactor `jsType` - Add `Infinity` keyword to `jsType` - Move `const` and `var` to `jsStorageClass` - Add `let` to `jsStorageClass` - Link `jsNan`, `jsNull`, and `jsUndefined` to `Type` (from `Constant`) --- syntax/javascript.vim | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index a5fecaf1..f6ea94f0 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -96,7 +96,8 @@ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+- syntax keyword jsPrototype prototype "" Program Keywords -syntax keyword jsType const var function +syntax keyword jsType function Infinity +syntax keyword jsStorageClass const var let syntax keyword jsOperator delete instanceof typeof void syntax match jsOperator /\(!\|||\|&&\|+\|-\|<\|>\|=\)/ syntax keyword jsBoolean true false @@ -179,7 +180,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -265,10 +266,11 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsParensErrC Error HiLink jsOperator Operator HiLink jsType Type + HiLink jsStorageClass StorageClass HiLink jsThis Special - HiLink jsNan Constant - HiLink jsNull Constant - HiLink jsUndefined Constant + HiLink jsNan Type + HiLink jsNull Type + HiLink jsUndefined Type HiLink jsNumber Number HiLink jsFloat Number HiLink jsBoolean Boolean From 7c24dbd9361999733bb9a8395f2ab0c40610f831 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Wed, 24 Jul 2013 15:27:51 -0400 Subject: [PATCH 0043/1043] Update global objects / builtin functions --- syntax/javascript.vim | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f6ea94f0..f4075cc5 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -124,9 +124,12 @@ syntax keyword jsLabel case default syntax keyword jsKeyword new in with syntax keyword jsException try catch throw finally -syntax keyword jsGlobalObjects Array Boolean Date Function Infinity JavaArray JavaClass JavaObject JavaPackage Math Number Object Packages RegExp String Undefined java netscape sun +syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console JavaArray JavaClass JavaObject JavaPackage Packages java netscape sun +syntax match jsGlobalObjects /\%(Intl\.\)\@<=\(Collator\|DateTimeFormat\|NumberFormat\)/ -syntax keyword jsExceptions Error EvalError RangeError ReferenceError SyntaxError TypeError URIError +syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError + +syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval syntax keyword jsFutureKeys abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws goto private transient debugger implements protected volatile double import public @@ -180,7 +183,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -247,7 +250,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsRegexpGroup jsRegexpString HiLink jsRegexpCharClass Character HiLink jsCharacter Character - HiLink jsPrototype Type + HiLink jsPrototype Special HiLink jsConditional Conditional HiLink jsBranch Conditional HiLink jsLabel Label @@ -279,6 +282,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsGlobalObjects Special HiLink jsExceptions Special HiLink jsFutureKeys Special + HiLink jsBuiltins Special HiLink jsDomErrNo Constant HiLink jsDomNodeConsts Constant From c7ffd1b35ffabbeb3bc40ff0dfc2365e21c6fc76 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Wed, 24 Jul 2013 15:29:40 -0400 Subject: [PATCH 0044/1043] Link `jsFloat` to `Float` (from `Number`) --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f4075cc5..a7f2ee96 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -275,7 +275,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsNull Type HiLink jsUndefined Type HiLink jsNumber Number - HiLink jsFloat Number + HiLink jsFloat Float HiLink jsBoolean Boolean HiLink jsNoise Noise HiLink jsSpecial Special From 10e3c20280f0d7acff35165007b5203b6037aca4 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Thu, 25 Jul 2013 09:26:42 -0400 Subject: [PATCH 0045/1043] Add missing operators --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index cd09a190..bf221e3f 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -99,7 +99,7 @@ syntax keyword jsPrototype prototype syntax keyword jsType function Infinity syntax keyword jsStorageClass const var let syntax keyword jsOperator delete instanceof typeof void -syntax match jsOperator /\(!\|||\|&&\|+\|-\|<\|>\|=\)/ +syntax match jsOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/ syntax keyword jsBoolean true false if g:javascript_conceal == 1 From 2a7d133d286a9cc0675f22de10c6aefccb6b26d1 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Thu, 25 Jul 2013 09:32:55 -0400 Subject: [PATCH 0046/1043] Move `Infinity` to `jsNumber` (from `jsType`) --- syntax/javascript.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index bf221e3f..f6e5b0f5 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -90,13 +90,14 @@ syntax cluster jsRegexpSpecial contains=jsRegexpBoundary,jsRegexpBackRef,jsReg syntax region jsRegexpGroup start="\\\@\|\<0[xX]\x\+\>/ +syntax keyword jsNumber Infinity syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/ "" JavaScript Prototype syntax keyword jsPrototype prototype "" Program Keywords -syntax keyword jsType function Infinity +syntax keyword jsType function syntax keyword jsStorageClass const var let syntax keyword jsOperator delete instanceof typeof void syntax match jsOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/ From 501ad5d1cec53dc2a9d2ce1bb89b593209a3d500 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Thu, 25 Jul 2013 09:49:12 -0400 Subject: [PATCH 0047/1043] Link `jsNan` to `Number` - Paradoxically, `typeof NaN` returns `number` --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index f6e5b0f5..a93ef614 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -272,7 +272,7 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsType Type HiLink jsStorageClass StorageClass HiLink jsThis Special - HiLink jsNan Type + HiLink jsNan Number HiLink jsNull Type HiLink jsUndefined Type HiLink jsNumber Number From 3a091a413a43efb21af78301088e2a5fe7e39c28 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Fri, 26 Jul 2013 14:09:39 -0700 Subject: [PATCH 0048/1043] Adds contributing guide to readme --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index efc1ec60..c7fdc4a4 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,12 @@ let g:html_indent_style1 = "inc" Head over to [vim.org](http://www.vim.org/scripts/script.php?script_id=2075) for more information. +## Contributing + +If you'd like to be added as a contributor the price of admission is 1 pull request. +Please follow the general code style guides (read the code) and in your pull request explain +the reason for the proposed change and how it is valuable. + ## Bug report Report a bug on [GitHub Issues](https://github.com/pangloss/vim-javascript/issues). From e193b66dc06c8ba0fc59521517d0d1ac5b0420bf Mon Sep 17 00:00:00 2001 From: Amadeus Demarzi Date: Fri, 26 Jul 2013 14:46:26 -0700 Subject: [PATCH 0049/1043] Isolating curly/square brackets and parenthesis This commit creates new highlight groups called jsBrackets, jsParens and jsBlocks that can be used to individually highlight (), {}, and []. They are all mapped back to the Noise group for consistency though. --- syntax/javascript.vim | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index cd09a190..65174b7a 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -185,9 +185,9 @@ endif "DOM/HTML/CSS "" Code blocks syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException -syntax region jsBracket matchgroup=Noise start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc -syntax region jsParen matchgroup=Noise start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc -syntax region jsBlock matchgroup=Noise start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc +syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc +syntax region jsBlock matchgroup=jsBlocks start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression "" catch errors caused by wrong parenthesis @@ -278,6 +278,9 @@ if version >= 508 || !exists("did_javascript_syn_inits") HiLink jsFloat Float HiLink jsBoolean Boolean HiLink jsNoise Noise + HiLink jsBrackets Noise + HiLink jsParens Noise + HiLink jsBlocks Noise HiLink jsSpecial Special HiLink jsGlobalObjects Special HiLink jsExceptions Special From 20742192112a9efc2ea99179b814e6f8dd8585b6 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Fri, 26 Jul 2013 09:58:32 -0400 Subject: [PATCH 0050/1043] Move program keywords above comments - Otherwise, `jsOperator` trumps `jsComment` and `jsLineComment` --- syntax/javascript.vim | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index a93ef614..c7d3b5d7 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -33,6 +33,13 @@ syntax sync fromstart syntax match jsNoise /\%(:\|,\|\;\|\.\)/ +"" Program Keywords +syntax keyword jsType function +syntax keyword jsStorageClass const var let +syntax keyword jsOperator delete instanceof typeof void +syntax match jsOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/ +syntax keyword jsBoolean true false + "" JavaScript comments syntax keyword jsCommentTodo TODO FIXME XXX TBD contained syntax region jsLineComment start=+\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell @@ -96,13 +103,6 @@ syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+- "" JavaScript Prototype syntax keyword jsPrototype prototype -"" Program Keywords -syntax keyword jsType function -syntax keyword jsStorageClass const var let -syntax keyword jsOperator delete instanceof typeof void -syntax match jsOperator /\(!\||\|&\|+\|-\|<\|>\|=\|%\|\/\|*\|\~\|\^\)/ -syntax keyword jsBoolean true false - if g:javascript_conceal == 1 syntax keyword jsNull null conceal cchar=ø syntax keyword jsThis this conceal cchar=@ From 93a465a6445cb8c4b5f8fecb35d0836d6658464f Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Mon, 29 Jul 2013 14:46:48 -0400 Subject: [PATCH 0051/1043] Add `document` and `window` to global objects --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 7df949ee..d3444d6d 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -125,7 +125,7 @@ syntax keyword jsLabel case default syntax keyword jsKeyword new in with syntax keyword jsException try catch throw finally -syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console JavaArray JavaClass JavaObject JavaPackage Packages java netscape sun +syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console JavaArray JavaClass JavaObject JavaPackage Packages java netscape sun document window syntax match jsGlobalObjects /\%(Intl\.\)\@<=\(Collator\|DateTimeFormat\|NumberFormat\)/ syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError From 4d541965bf4f4b126c2667e80d620c9bdb4d2be3 Mon Sep 17 00:00:00 2001 From: Quinn Strahl Date: Tue, 30 Jul 2013 09:25:23 -0400 Subject: [PATCH 0052/1043] Remove `jsIdentifier` - (At least) temporarily removed - Controversial, unclear if it's the correct way to go - Contact Bram / other heads of Vim development for clarity --- syntax/javascript.vim | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index d3444d6d..7681b2b6 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -82,7 +82,6 @@ endif "" JSDoc end syntax case match "" Syntax in the JavaScript code -syntax match jsIdentifier /\k\+/ syntax match jsFuncCall /\k\+\%(\s*(\)\@=/ syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc @@ -184,7 +183,7 @@ endif "DOM/HTML/CSS "" Code blocks -syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsIdentifier,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins +syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsType,jsOperator,jsBoolean,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsParenError,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsBranch,jsReturn,jsStatement,jsTernaryIf,jsNoise,jsException syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc @@ -227,7 +226,6 @@ if version >= 508 || !exists("did_javascript_syn_inits") else command -nargs=+ HiLink hi def link endif - HiLink jsIdentifier Identifier HiLink jsComment Comment HiLink jsLineComment Comment HiLink jsEnvComment PreProc From e50319120a780afa530d5c752b12cf3119305df7 Mon Sep 17 00:00:00 2001 From: Amadeus Demarzi Date: Fri, 2 Aug 2013 17:40:18 -0700 Subject: [PATCH 0053/1043] Removing legacy globals This commit removes some seemingly legacy globals, mostly specific to Java. --- syntax/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/syntax/javascript.vim b/syntax/javascript.vim index 7681b2b6..52433af4 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -124,7 +124,7 @@ syntax keyword jsLabel case default syntax keyword jsKeyword new in with syntax keyword jsException try catch throw finally -syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console JavaArray JavaClass JavaObject JavaPackage Packages java netscape sun document window +syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object RegExp String Proxy ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray Intl JSON Math console document window syntax match jsGlobalObjects /\%(Intl\.\)\@<=\(Collator\|DateTimeFormat\|NumberFormat\)/ syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError From 4c5cf643bafe3b5f3e9f33abf7996e483257c3c7 Mon Sep 17 00:00:00 2001 From: Josh Perez Date: Fri, 2 Aug 2013 22:16:16 -0700 Subject: [PATCH 0054/1043] Removes html indentation --- README.md | 21 -- indent/html.vim | 539 ------------------------------------------------ 2 files changed, 560 deletions(-) delete mode 100644 indent/html.vim diff --git a/README.md b/README.md index c7fdc4a4..9172a9d5 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,6 @@ JavaScript bundle for vim, this bundle provides syntax and indent plugins. > Indentation of javascript in vim is terrible, and this is the very end of it. -## Features - -1. very correct indentation for javascript -2. support javascript indentation in html (provided by [lepture](https://github.com/lepture)) - ## Installation - Install with [Vundle](https://github.com/gmarik/vundle) @@ -31,22 +26,6 @@ If you prefer tpope's pathogen, that's ok. Just clone it: cd ~/.vim/bundle git clone https://github.com/pangloss/vim-javascript.git -## Configuration - -[html indentation](http://www.vim.org/scripts/script.php?script_id=2075) -provided by Andy Wokula is faster. But you need to make some configuration. - -Suggested configuration: - -```vim -let g:html_indent_inctags = "html,body,head,tbody" -let g:html_indent_script1 = "inc" -let g:html_indent_style1 = "inc" -``` - -Head over to [vim.org](http://www.vim.org/scripts/script.php?script_id=2075) -for more information. - ## Contributing If you'd like to be added as a contributor the price of admission is 1 pull request. diff --git a/indent/html.vim b/indent/html.vim deleted file mode 100644 index 4e9dcfa6..00000000 --- a/indent/html.vim +++ /dev/null @@ -1,539 +0,0 @@ -" Vim indent script for HTML -" General: "{{{ -" File: html.vim (Vimscript #2075) -" Author: Andy Wokula -" Last Change: 2012 Jun 05 -" Last Changed By: Hsiaoming Yang -" Version: 0.8 -" Vim Version: Vim7 -" Description: -" Improved version of the distributed html indent script, faster on a -" range of lines. -" -" Customization: -" This section is about variables you can set in your vimrc. -" -" - You can set the indent for the first line after