let s:skip_syntax = sj#SkipSyntax(['String', 'Comment']) function! sj#clojure#SplitList() if sj#SearchSkip('[([{]', s:skip_syntax, 'bW', line('.'), ) <= 0 return 0 endif call sj#PushCursor() let start_col = col('.') let bracket = getline('.')[start_col - 1] if bracket == '(' let closing_bracket = ')' elseif bracket == '[' let closing_bracket = '\]' elseif bracket == '{' let closing_bracket = '}' else throw "Unknown bracket: " . bracket endif if searchpair(bracket, '', closing_bracket, 'W', s:skip_syntax, line('.')) <= 0 call sj#PopCursor() return 0 endif let end_col = col('.') let parser = sj#argparser#clojure#Construct(start_col + 1, end_col - 1, getline('.')) call parser.Process() if len(parser.args) <= 0 call sj#PopCursor() return 0 endif call sj#PopCursor() call sj#ReplaceMotion('vi' . bracket, join(parser.args, "\n")) return 1 endfunction function! sj#clojure#JoinList() if sj#SearchSkip('[([{]', s:skip_syntax, 'bW') <= 0 return 0 endif let bracket = getline('.')[col('.') - 1] exe 'normal! va'.bracket.'J' return 1 endfunction