From b617fff50701133a8a7718941bac7ad6c2e3a5f8 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Mon, 10 Oct 2016 15:47:13 -0700 Subject: [PATCH 1/5] massive expression to if chain more readable --- indent/javascript.vim | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index e6af48a8..50e390f8 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -129,13 +129,19 @@ endfunction " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader function s:IsBlock() - return getline(line('.'))[col('.')-1] == '{' && !search('\C\') !~# - \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' - \ : !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') && (search('>\_s*\%#','bW') ? search('=\%#','bW') || - \ synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' : - \ search(s:expr_case . '\_s*\%#','nbW') || !search('[{:]\_s*\%#','bW') || s:IsBlock())) + if getline(line('.'))[col('.')-1] == '{' && !search('\C\') !~# + \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' + else + return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') && ((!search('>\_s*\%#','bW') || (search('=\%#','bW') || + \ synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise') || + \ search(s:expr_case . '\_s*\%#','nbW') || !search('[{:]\_s*\%#','bW') || s:IsBlock())) + endif + endif endfunction " Find line above 'lnum' that isn't empty, in a comment, or in a string. From 7fe5962f658f267c44e1cf8ab7e1c4fb367ac56d Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Mon, 10 Oct 2016 16:16:47 -0700 Subject: [PATCH 2/5] Update javascript.vim --- indent/javascript.vim | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 50e390f8..2b2f9b16 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -136,12 +136,19 @@ function s:IsBlock() if search('\l\_s*\%#','bW') return expand('') !~# \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' - else - return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') && ((!search('>\_s*\%#','bW') || (search('=\%#','bW') || - \ synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise') || - \ search(s:expr_case . '\_s*\%#','nbW') || !search('[{:]\_s*\%#','bW') || s:IsBlock())) endif + if search('>\_s*\%#','bW') + return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' + endif + if search(':\_s*\%#','bW') + return search(s:expr_case . '\_s*\%#','nbW') + endif + if search('{\_s*\%#','bW') + return s:IsBlock() + endif + return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') endif + return 0 endfunction " Find line above 'lnum' that isn't empty, in a comment, or in a string. From 23928ae21190cf01f8a24e0a40f51e5bdfe4baf9 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Mon, 10 Oct 2016 16:21:47 -0700 Subject: [PATCH 3/5] Update javascript.vim --- indent/javascript.vim | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 2b2f9b16..f920773e 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -136,19 +136,16 @@ function s:IsBlock() if search('\l\_s*\%#','bW') return expand('') !~# \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' - endif - if search('>\_s*\%#','bW') + elseif search('>\_s*\%#','bW') return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' - endif - if search(':\_s*\%#','bW') + elseif search(':\_s*\%#','bW') return search(s:expr_case . '\_s*\%#','nbW') - endif - if search('{\_s*\%#','bW') + elseif search('{\_s*\%#','bW') return s:IsBlock() + else + return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') endif - return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') endif - return 0 endfunction " Find line above 'lnum' that isn't empty, in a comment, or in a string. From 44de517210901a45985cb2a7177f928f4e1468f4 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Mon, 10 Oct 2016 16:44:44 -0700 Subject: [PATCH 4/5] performance --- indent/javascript.vim | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index f920773e..87ec9fef 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -129,21 +129,29 @@ endfunction " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader function s:IsBlock() - if getline(line('.'))[col('.')-1] == '{' && !search('\C\') !~# - \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' - elseif search('>\_s*\%#','bW') - return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' - elseif search(':\_s*\%#','bW') - return search(s:expr_case . '\_s*\%#','nbW') - elseif search('{\_s*\%#','bW') - return s:IsBlock() + if search('\S','bW') + let char = getline(line('.'))[col('.')-1] + if char =~# '\l' + return expand('') !~# + \ '\<\%(var\|const\|let\|\%(im\|ex\)port\|yield\|de\%(fault\|lete\)\|void\|t\%(ypeof\|hrow\)\|new\|in\%(stanceof\)\=\)\>' + elseif char == '>' + return search('=\%#','bW') || synIDattr(synID(line('.'),col('.'),0),'name') =~? 'flownoise' + elseif char == ':' + return strpart(getline(line('.')),0,col('.')) =~# s:expr_case . '$' + elseif char == '{' + return s:IsBlock() + else + return char !~# '[-=~!<*+,./?^%|&\[(]' + endif else - return !search('[-=~!<*+,./?^%|&\[(]\_s*\%#','nbW') + return 1 endif endif endfunction From 9efd455b49002f4805f05ea3e857c099ef1fea06 Mon Sep 17 00:00:00 2001 From: Chris Paul Date: Mon, 10 Oct 2016 16:48:47 -0700 Subject: [PATCH 5/5] Update javascript.vim --- indent/javascript.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indent/javascript.vim b/indent/javascript.vim index 87ec9fef..4f0301da 100644 --- a/indent/javascript.vim +++ b/indent/javascript.vim @@ -130,7 +130,7 @@ endfunction " https://github.com/sweet-js/sweet.js/wiki/design#give-lookbehind-to-the-reader function s:IsBlock() if getline(line('.'))[col('.')-1] == '{' - if strpart(getline(line('.')),0,col('.') - 1) =~# 'return\s*$' + if search('\C\