" Come here when loading the script the first time.
-function s:get_line_trimmed(lnum)
+function! s:get_line_trimmed(lnum)
" Get the line and remove a trailing comment.
" Use syntax highlighting attributes when possible.
" NOTE: this is not accurate; /* */ or a line continuation could trick it
endif
endfunction
+function! s:is_string_comment(lnum, col)
+ if has('syntax_items')
+ for id in synstack(a:lnum, a:col)
+ let synname = synIDattr(id, "name")
+ if synname == "rustString" || synname =~ "^rustComment"
+ return 1
+ endif
+ endfor
+ else
+ " without syntax, let's not even try
+ return 0
+ endif
+endfunction
+
function GetRustIndent(lnum)
" Starting assumption: cindent (called at the end) will do it right
" column zero)
call cursor(a:lnum, 1)
- if searchpair('{\|(', '', '}\|)', 'nbW') == 0
- if searchpair('\[', '', '\]', 'nbW') == 0
+ if searchpair('{\|(', '', '}\|)', 'nbW'
+ \ 's:is_string_comment(line("."), col("."))') == 0
+ if searchpair('\[', '', '\]', 'nbW',
+ \ 's:is_string_comment(line("."), col("."))') == 0
" Global scope, should be zero
return 0
else