2
2
" Filename: indent/haskell.vim
3
3
" Author: itchyny
4
4
" License: MIT License
5
- " Last Change: 2021/08/04 19:27:55 .
5
+ " Last Change: 2021/08/07 07:21:36 .
6
6
" =============================================================================
7
7
8
8
if exists (' b:did_indent' )
@@ -91,7 +91,11 @@ function! GetHaskellIndent() abort
91
91
return 0
92
92
endif
93
93
94
- if line = ~# ' \v^\s*,([^()[\]{}]*|\([^()[\]{}]*\)|\[[^()[\]{}]*\])*(\s*--.*)?$' && nonblankline = ~# ' \v^\s*,'
94
+ let noparen = ' [^()[\]{}]'
95
+ let noparen = ' %(' . noparen . ' +|\(' . noparen . ' *\)|\[' . noparen . ' *\])'
96
+ let noparen = ' %(' . noparen . ' +|\(' . noparen . ' *\)|\[' . noparen . ' *\])*'
97
+
98
+ if line = ~# ' \v^\s*,' . noparen . ' (\s*--.*)?$' && nonblankline = ~# ' \v^\s*,'
95
99
return match (nonblankline, ' ^\s*\zs,' )
96
100
endif
97
101
@@ -106,15 +110,15 @@ function! GetHaskellIndent() abort
106
110
return match (nonblankline, ' ^\s*\zs--' )
107
111
endif
108
112
109
- if nonblankline = ~# ' \v^\s*}?[^()[\]{}]*[([{]([^()[\]{}]*|\([^()[\]{}]*\)|\[[^()[\]{}]*\])* [-+/*\$&<>,]?(\s*--.*)?$'
113
+ if nonblankline = ~# ' \v^\s*}?' . noparen . ' [([{] ' . noparen . ' [-+/*\$&<>,]?(\s*--.*)?$'
110
114
if nonblankline = ~# ' \v[([{](\s*--.*)?$'
111
115
return match (nonblankline, ' \v^\s*(<where>|.*<let>)?\s*\zs' ) + &shiftwidth
112
116
elseif nonblankline = ~# ' \v[-+/*\$&<>,](\s*--.*)?$'
113
- return match (nonblankline, ' \v^\s*}?[^()[\]{}]* (\[.*\|\s*\zs|[([{]\s*\zs)' )
117
+ return match (nonblankline, ' \v^\s*}?' . noparen . ' (\[.*\|\s*\zs|[([{]\s*\zs)' )
114
118
elseif nonblankline = ~# ' \v^[^[\]]*\[([^[\]]*|\[[^[\]]*\])*\|([^[\]]*|\[[^[\]]*\])*(\s*--.*)?$'
115
119
return match (nonblankline, ' \v^[^[\]]*\[([^[\]]*|\[[^[\]]*\])*\zs\|' )
116
120
else
117
- return match (nonblankline, ' \v^\s*}?[^()[\]{}]* \zs[([{]' )
121
+ return match (nonblankline, ' \v^\s*}?' . noparen . ' \zs[([{]' )
118
122
endif
119
123
endif
120
124
@@ -187,7 +191,7 @@ function! GetHaskellIndent() abort
187
191
return match (nonblankline, ' \S' )
188
192
else
189
193
return match (nonblankline, ' \v^\s*(<where>|.*<let>)?\s*\zs' ) +
190
- \ (nonblankline = ~# ' \v(<where>|<let>)|^\s*\k+\s*\=.*([-+/*\$&<>]|`\k+`)(\s*--.*)?$|(\=|-\>)(\s*--.*)?$' ? &shiftwidth : 0 )
194
+ \ (nonblankline = ~# ' \v(<where>|<let>)|^\s*\k+\s*' . noparen . ' \=.*([-+/*\$&<>]|`\k+`)(\s*--.*)?$|(\=|-\>)(\s*--.*)?$' ? &shiftwidth : 0 )
191
195
endif
192
196
endif
193
197
0 commit comments