@@ -57,27 +57,30 @@ if exists("*searchpairpos")
5757 let g: clojure_align_subforms = 0
5858 endif
5959
60- function ! s: SynIdName ()
60+ function ! s: syn_id_name ()
6161 return synIDattr (synID (line (" ." ), col (" ." ), 0 ), " name" )
6262 endfunction
6363
64- function ! s: CurrentChar ()
64+ function ! s: ignored_region ()
65+ return s: syn_id_name () = ~? ' \vstring|regex|comment|character'
66+ endfunction
67+
68+ function ! s: current_char ()
6569 return getline (' .' )[col (' .' )-1 ]
6670 endfunction
6771
68- function ! s: CurrentWord ()
72+ function ! s: current_word ()
6973 return getline (' .' )[col (' .' )-1 : searchpos (' \v>' , ' n' , line (' .' ))[1 ]-2 ]
7074 endfunction
7175
72- function ! s: IsParen ()
73- return s: CurrentChar () = ~# ' \v[\(\)\[\]\{\}]' &&
74- \ s: SynIdName () !~? ' \vstring|regex|comment|character'
76+ function ! s: is_paren ()
77+ return s: current_char () = ~# ' \v[\(\)\[\]\{\}]' && ! s: ignored_region ()
7578 endfunction
7679
7780 " Returns 1 if string matches a pattern in 'patterns', which may be a
7881 " list of patterns, or a comma-delimited string of implicitly anchored
7982 " patterns.
80- function ! s: MatchesOne (patterns, string )
83+ function ! s: match_one (patterns, string )
8184 let list = type (a: patterns ) == type ([])
8285 \ ? a: patterns
8386 \ : map (split (a: patterns , ' ,' ), ' "^" . v:val . "$"' )
@@ -86,7 +89,7 @@ if exists("*searchpairpos")
8689 endfor
8790 endfunction
8891
89- function ! s: MatchPairs (open , close , stopat)
92+ function ! s: match_pairs (open , close , stopat)
9093 " Stop only on vector and map [ resp. {. Ignore the ones in strings and
9194 " comments.
9295 if a: stopat == 0
@@ -95,11 +98,11 @@ if exists("*searchpairpos")
9598 let stopat = a: stopat
9699 endif
97100
98- let pos = searchpairpos (a: open , ' ' , a: close , ' bWn' , " !s:IsParen ()" , stopat)
101+ let pos = searchpairpos (a: open , ' ' , a: close , ' bWn' , " !s:is_paren ()" , stopat)
99102 return [pos[0 ], virtcol (pos)]
100103 endfunction
101104
102- function ! s: ClojureCheckForStringWorker ()
105+ function ! s: clojure_check_for_string_worker ()
103106 " Check whether there is the last character of the previous line is
104107 " highlighted as a string. If so, we check whether it's a ". In this
105108 " case we have to check also the previous character. The " might be the
@@ -113,17 +116,17 @@ if exists("*searchpairpos")
113116
114117 call cursor (nb , 0 )
115118 call cursor (0 , col (" $" ) - 1 )
116- if s: SynIdName () !~? " string"
119+ if s: syn_id_name () !~? " string"
117120 return -1
118121 endif
119122
120123 " This will not work for a " in the first column...
121- if s: CurrentChar () == ' "'
124+ if s: current_char () == ' "'
122125 call cursor (0 , col (" $" ) - 2 )
123- if s: SynIdName () !~? " string"
126+ if s: syn_id_name () !~? " string"
124127 return -1
125128 endif
126- if s: CurrentChar () != ' \\'
129+ if s: current_char () != ' \\'
127130 return -1
128131 endif
129132 call cursor (0 , col (" $" ) - 1 )
@@ -138,51 +141,51 @@ if exists("*searchpairpos")
138141 return indent (" ." )
139142 endfunction
140143
141- function ! s: CheckForString ()
144+ function ! s: check_for_string ()
142145 let pos = getpos (' .' )
143146 try
144- let val = s: ClojureCheckForStringWorker ()
147+ let val = s: clojure_check_for_string_worker ()
145148 finally
146149 call setpos (' .' , pos)
147150 endtry
148151 return val
149152 endfunction
150153
151- function ! s: StripNamespaceAndMacroChars (word)
154+ function ! s: strip_namespace_and_macro_chars (word)
152155 return substitute (a: word , " \\ v%(.*/|[#'`~@^,]*)(.*)" , ' \1' , ' ' )
153156 endfunction
154157
155- function ! s: ClojureIsMethodSpecialCaseWorker (position)
158+ function ! s: clojure_is_method_special_case_worker (position)
156159 " Find the next enclosing form.
157160 call search (' \S' , ' Wb' )
158161
159162 " Special case: we are at a '(('.
160- if s: CurrentChar () == ' ('
163+ if s: current_char () == ' ('
161164 return 0
162165 endif
163166 call cursor (a: position )
164167
165- let nextParen = s: MatchPairs (' (' , ' )' , 0 )
168+ let next_paren = s: match_pairs (' (' , ' )' , 0 )
166169
167170 " Special case: we are now at toplevel.
168- if nextParen == [0 , 0 ]
171+ if next_paren == [0 , 0 ]
169172 return 0
170173 endif
171- call cursor (nextParen )
174+ call cursor (next_paren )
172175
173176 call search (' \S' , ' W' )
174- let w = s: StripNamespaceAndMacroChars (s: CurrentWord ())
177+ let w = s: strip_namespace_and_macro_chars (s: current_word ())
175178 if g: clojure_special_indent_words = ~# ' \V\<' . w . ' \>'
176179 return 1
177180 endif
178181
179182 return 0
180183 endfunction
181184
182- function ! s: IsMethodSpecialCase (position)
185+ function ! s: is_method_special_case (position)
183186 let pos = getpos (' .' )
184187 try
185- let val = s: ClojureIsMethodSpecialCaseWorker (a: position )
188+ let val = s: clojure_is_method_special_case_worker (a: position )
186189 finally
187190 call setpos (' .' , pos)
188191 endtry
@@ -197,7 +200,7 @@ if exists("*searchpairpos")
197200
198201 " We have to apply some heuristics here to figure out, whether to use
199202 " normal lisp indenting or not.
200- let i = s: CheckForString ()
203+ let i = s: check_for_string ()
201204 if i > -1
202205 return i + ! ! g: clojure_align_multiline_strings
203206 endif
@@ -207,9 +210,9 @@ if exists("*searchpairpos")
207210 " Find the next enclosing [ or {. We can limit the second search
208211 " to the line, where the [ was found. If no [ was there this is
209212 " zero and we search for an enclosing {.
210- let paren = s: MatchPairs (' (' , ' )' , 0 )
211- let bracket = s: MatchPairs (' \[' , ' \]' , paren[0 ])
212- let curly = s: MatchPairs (' {' , ' }' , bracket[0 ])
213+ let paren = s: match_pairs (' (' , ' )' , 0 )
214+ let bracket = s: match_pairs (' \[' , ' \]' , paren[0 ])
215+ let curly = s: match_pairs (' {' , ' }' , bracket[0 ])
213216
214217 " In case the curly brace is on a line later then the [ or - in
215218 " case they are on the same line - in a higher column, we take the
@@ -246,7 +249,7 @@ if exists("*searchpairpos")
246249 " - In any other case we use the column of the end of the word + 2.
247250 call cursor (paren)
248251
249- if s: IsMethodSpecialCase (paren)
252+ if s: is_method_special_case (paren)
250253 return paren[1 ] + &shiftwidth - 1
251254 endif
252255
@@ -257,7 +260,7 @@ if exists("*searchpairpos")
257260
258261 " In case after the paren is a whitespace, we search for the next word.
259262 call cursor (0 , col (' .' ) + 1 )
260- if s: CurrentChar () == ' '
263+ if s: current_char () == ' '
261264 call search (' \v\S' , ' W' )
262265 endif
263266
@@ -269,7 +272,7 @@ if exists("*searchpairpos")
269272
270273 " We still have to check, whether the keyword starts with a (, [ or {.
271274 " In that case we use the ( position for indent.
272- let w = s: CurrentWord ()
275+ let w = s: current_word ()
273276 if stridx (' ([{' , w [0 ]) > -1
274277 return paren[1 ]
275278 endif
@@ -278,15 +281,15 @@ if exists("*searchpairpos")
278281 " metacharacters.
279282 "
280283 " e.g. clojure.core/defn and #'defn should both indent like defn.
281- let ww = s: StripNamespaceAndMacroChars (w )
284+ let ww = s: strip_namespace_and_macro_chars (w )
282285
283286 if &lispwords = ~# ' \V\<' . ww . ' \>'
284287 return paren[1 ] + &shiftwidth - 1
285288 endif
286289
287290 if g: clojure_fuzzy_indent
288- \ && ! s: MatchesOne (g: clojure_fuzzy_indent_blacklist , ww )
289- \ && s: MatchesOne (g: clojure_fuzzy_indent_patterns , ww )
291+ \ && ! s: match_one (g: clojure_fuzzy_indent_blacklist , ww )
292+ \ && s: match_one (g: clojure_fuzzy_indent_patterns , ww )
290293 return paren[1 ] + &shiftwidth - 1
291294 endif
292295
0 commit comments