From d5812ef4be32f06bae7b26cfe0fc7efe2bd523b8 Mon Sep 17 00:00:00 2001 From: feodorp <36996817+feodorp@users.noreply.github.com> Date: Thu, 14 Jul 2022 17:45:02 -0300 Subject: [PATCH 1/6] Add fortran support --- plugin/endwise.vim | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index cb86599..8a00eac 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -11,6 +11,22 @@ let g:loaded_endwise = 1 augroup endwise " {{{1 autocmd! + autocmd FileType fortran + \ let procprefix = '\%(\s*\%(pure\|impure\|elemental\|module\|recursive\)\s\+\)\{,2}' | + \ let proctype = '\%(\s*\%(\%(integer\|real\|complex\|logical\|double\s\+precision\)\s*\%((\%(\s*kind\s*=\)\=\s*\w\+\s*)\s\+\)\=\)' + \ .'\|type\s*(\s*\w\+\s*)\s\+\|character\s*\%((\%(\%(\s*len\s*=\)\=\s*\d\+\s*,\=\|\%(\s*kind\s*=\)\=\s*\w\+\s*,\=\)\{,2},\@ Date: Thu, 14 Jul 2022 19:47:35 -0300 Subject: [PATCH 2/6] Add fortran support --- plugin/endwise.vim | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index 8a00eac..e2868f1 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -16,14 +16,16 @@ augroup endwise " {{{1 \ let proctype = '\%(\s*\%(\%(integer\|real\|complex\|logical\|double\s\+precision\)\s*\%((\%(\s*kind\s*=\)\=\s*\w\+\s*)\s\+\)\=\)' \ .'\|type\s*(\s*\w\+\s*)\s\+\|character\s*\%((\%(\%(\s*len\s*=\)\=\s*\d\+\s*,\=\|\%(\s*kind\s*=\)\=\s*\w\+\s*,\=\)\{,2},\@ Date: Mon, 18 Jul 2022 09:05:42 -0300 Subject: [PATCH 3/6] fix type without attr but with double colon --- plugin/endwise.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index e2868f1..ec25fee 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -20,7 +20,7 @@ augroup endwise " {{{1 \ let b:endwise_pattern = '^\s*\%(' \ .'\zs\%(program\s\+\|module\s\+\(procedure\)\@!\|submodule\s\+\%((\a\w*\s*\(:\a\w*\s*\)*)\s*\)\=\)\%(\a\w*\)\ze' \ .'\|\%('.procprefix.'\zssubroutine\|\%('.procprefix.'\|'.proctype.'\)\{,2}\zsfunction\)\s\+\%(\a\w*\)\ze' - \ .'\|\zstype\%(\s*is\)\@!\s*\%(\%(,\s*\S*\)\+\s*::\)\=\s*\%(\a\w*\)\ze' + \ .'\|\zstype\%(\s*is\)\@!\s*\%(\%(,\s*\S*\)*\s*::\)\=\s*\%(\a\w*\)\ze' \ .'\|\%(\a\w*\s*:\s*\)\=\%(\%(\zsassociate\ze\|\zsselect\ze\s*\%(case\|type\|rank\)\|\zsblock\ze\|\zsforall\ze\|\zscritical\ze\|\zswhere\ze\)' \ .'\|\%(\ Date: Tue, 26 Jul 2022 17:34:21 -0300 Subject: [PATCH 4/6] fix prefix-specs for procedures --- plugin/endwise.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index ec25fee..cf93658 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -12,7 +12,7 @@ let g:loaded_endwise = 1 augroup endwise " {{{1 autocmd! autocmd FileType fortran - \ let procprefix = '\%(\s*\%(pure\|impure\|elemental\|module\|recursive\)\s\+\)\{,2}' | + \ let procprefix = '\%(\s*\%(pure\%(\s\+impure\)\@!\|impure\%(\s\+pure\)\@!\|elemental\|module\|recursive\%(\s\+non_recursive)\@!\|non_recursive\%(\s\+recursive)\)\s\+\)\{,3}' | \ let proctype = '\%(\s*\%(\%(integer\|real\|complex\|logical\|double\s\+precision\)\s*\%((\%(\s*kind\s*=\)\=\s*\w\+\s*)\s\+\)\=\)' \ .'\|type\s*(\s*\w\+\s*)\s\+\|character\s*\%((\%(\%(\s*len\s*=\)\=\s*\d\+\s*,\=\|\%(\s*kind\s*=\)\=\s*\w\+\s*,\=\)\{,2},\@ Date: Tue, 26 Jul 2022 17:36:10 -0300 Subject: [PATCH 5/6] fix prefix-specs for procedures --- plugin/endwise.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index cf93658..0c090b9 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -12,7 +12,7 @@ let g:loaded_endwise = 1 augroup endwise " {{{1 autocmd! autocmd FileType fortran - \ let procprefix = '\%(\s*\%(pure\%(\s\+impure\)\@!\|impure\%(\s\+pure\)\@!\|elemental\|module\|recursive\%(\s\+non_recursive)\@!\|non_recursive\%(\s\+recursive)\)\s\+\)\{,3}' | + \ let procprefix = '\%(\s*\%(pure\%(\s\+impure\)\@!\|impure\%(\s\+pure\)\@!\|elemental\|module\|recursive\%(\s\+non_recursive\)\@!\|non_recursive\%(\s\+recursive\)\)\s\+\)\{,3}' | \ let proctype = '\%(\s*\%(\%(integer\|real\|complex\|logical\|double\s\+precision\)\s*\%((\%(\s*kind\s*=\)\=\s*\w\+\s*)\s\+\)\=\)' \ .'\|type\s*(\s*\w\+\s*)\s\+\|character\s*\%((\%(\%(\s*len\s*=\)\=\s*\d\+\s*,\=\|\%(\s*kind\s*=\)\=\s*\w\+\s*,\=\)\{,2},\@ Date: Tue, 26 Jul 2022 18:30:36 -0300 Subject: [PATCH 6/6] fix module prefix for function/subroutine --- plugin/endwise.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/endwise.vim b/plugin/endwise.vim index 0c090b9..fb994c2 100644 --- a/plugin/endwise.vim +++ b/plugin/endwise.vim @@ -18,7 +18,7 @@ augroup endwise " {{{1 \ let b:endwise_addition = '\="end " . substitute(submatch(0),"\\%(\\s*(\\%(\\a\\w*\\s*\\([,:]\\s*\\a\\w*\\s*\\)*\\)\\=)\\s*\\|type\\zs.\\{-}\\ze\\%(\\a\\w*\\)$\\)"," ","g")' | \ let b:endwise_words = 'program,module,submodule,function,subroutine,associate,interface,type,do,if,select,where,block,forall,critical,enum' | \ let b:endwise_pattern = '^\s*\%(' - \ .'\zs\%(program\s\+\|module\s\+\(procedure\)\@!\|submodule\s\+\%((\a\w*\s*\(:\a\w*\s*\)*)\s*\)\=\)\%(\a\w*\)\ze' + \ .'\zs\%(program\s\+\|module\s\+\(procedure\|.\{-}\%(subroutine\|function\)\)\@!\|submodule\s\+\%((\a\w*\s*\(:\a\w*\s*\)*)\s*\)\=\)\%(\a\w*\)\ze' \ .'\|\%('.procprefix.'\zssubroutine\|\%('.procprefix.'\|'.proctype.'\)\{,2}\zsfunction\)\s\+\%(\a\w*\)\ze' \ .'\|\zstype\%(\s*is\)\@!\s*\%(\%(,\s*\S*\)*\s*::\)\=\s*\%(\a\w*\)\ze' \ .'\|\%(\a\w*\s*:\s*\)\=\%(\%(\zsassociate\ze\|\zsselect\ze\s*\%(case\|type\|rank\)\|\zsblock\ze\|\zsforall\ze\|\zscritical\ze\|\zswhere\ze\)'