Lines Matching refs:lnum

20 setlocal formatexpr=Fixedgq(v:lnum,v:count)
76 " Check if the character at lnum:col is inside a string, comment, or is ascii.
77 function s:IsInStringOrComment(lnum, col) argument
78 return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_strcom
81 " Check if the character at lnum:col is inside a string.
82 function s:IsInString(lnum, col) argument
83 return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
86 " Check if the character at lnum:col is inside a multi-line comment.
87 function s:IsInMultilineComment(lnum, col) argument
88 …return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_mul…
91 " Check if the character at lnum:col is a line comment.
92 function s:IsLineComment(lnum, col) argument
93 return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_linecom
96 " Find line above 'lnum' that isn't empty, in a comment, or in a string.
97 function s:PrevNonBlankNonString(lnum) argument
99 let lnum = prevnonblank(a:lnum)
100 while lnum > 0
103 let line = getline(lnum)
112 …k && line !~ '^\s*\%(//\).*$' && !(s:IsInStringOrComment(lnum, 1) && s:IsInStringOrComment(lnum, s…
115 let lnum = prevnonblank(lnum - 1)
117 return lnum
120 " Find line above 'lnum' that started the continuation 'lnum' may be part of.
121 function s:GetMSL(lnum, in_one_line_scope) argument
123 let msl = a:lnum
124 let lnum = s:PrevNonBlankNonString(a:lnum - 1)
125 while lnum > 0
128 let line = getline(lnum)
130 if (col > 0 && !s:IsInStringOrComment(lnum, col)) || s:IsInString(lnum, strlen(line))
131 let msl = lnum
139 let msl_one_line = s:Match(lnum, s:one_line_scope_regex)
144 let lnum = s:PrevNonBlankNonString(lnum - 1)
156 function s:InMultiVarStatement(lnum) argument
157 let lnum = s:PrevNonBlankNonString(a:lnum - 1)
159 " let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name')
162 while lnum > 0
163 let line = getline(lnum)
171 return lnum
178 let lnum = s:PrevNonBlankNonString(lnum - 1)
187 function s:GetVarIndent(lnum) argument
188 let lvar = s:InMultiVarStatement(a:lnum)
189 let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1)
206 " Check if line 'lnum' has more opening brackets than closing ones.
207 function s:LineHasOpeningBrackets(lnum) argument
211 let line = getline(a:lnum)
214 if !s:IsInStringOrComment(a:lnum, pos + 1)
227 function s:Match(lnum, regex) argument
228 let col = match(getline(a:lnum), a:regex) + 1
229 return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
232 function s:IndentWithContinuation(lnum, ind, width) argument
234 let p_lnum = a:lnum
235 let lnum = s:GetMSL(a:lnum, 1)
236 let line = getline(lnum)
240 if p_lnum != lnum
247 let msl_ind = indent(lnum)
251 if s:Match(lnum, s:continuation_regex)
252 if lnum == p_lnum
262 function s:InOneLineScope(lnum) argument
263 let msl = s:GetMSL(a:lnum, 1)
270 function s:ExitingOneLineScope(lnum) argument
271 let msl = s:GetMSL(a:lnum, 1)
293 " Set up variables for restoring position in file. Could use v:lnum here.
301 let line = getline(v:lnum)
303 let prevline = prevnonblank(v:lnum - 1)
309 if col > 0 && !s:IsInStringOrComment(v:lnum, col)
310 call cursor(v:lnum, col)
312 let lvar = s:InMultiVarStatement(v:lnum)
357 if s:IsInMultilineComment(v:lnum, 1) && !s:IsLineComment(v:lnum, 1)
358 return cindent(v:lnum)
362 " let var_indent = s:GetVarIndent(v:lnum)
378 let lnum = s:PrevNonBlankNonString(v:lnum - 1)
381 if line =~ '^\s*$' && lnum != prevline
382 return indent(prevnonblank(v:lnum))
386 if lnum == 0
391 let line = getline(lnum)
392 let ind = indent(lnum)
395 if s:Match(lnum, s:block_regex)
396 return indent(s:GetMSL(lnum, 0)) + shiftwidth()
402 let counts = s:LineHasOpeningBrackets(lnum)
412 call cursor(v:lnum, vcol)
420 let ind = s:IndentWithContinuation(lnum, ind_con, shiftwidth())
425 let ols = s:InOneLineScope(lnum)
429 let ols = s:ExitingOneLineScope(lnum)
444 function! Fixedgq(lnum, count) argument
448 let l:first_char = indent(a:lnum) + 1
455 if s:IsLineComment(a:lnum, l:first_char) || s:IsInMultilineComment(a:lnum, l:first_char)
459 if len(getline(a:lnum)) < l:tw && l:count == 1 " No need for gq
473 call cursor(a:lnum, l:tw + 1)
474 let orig_breakpoint = searchpairpos(' ', '', '\.', 'bcW', '', a:lnum)
475 call cursor(a:lnum, l:tw + 1)
476 let breakpoint = searchpairpos(' ', '', '\.', 'bcW', s:skip_expr, a:lnum)
485 if breakpoint[1] <= indent(a:lnum)
486 call cursor(a:lnum, l:tw + 1)
487 let breakpoint = searchpairpos('\.', '', ' ', 'cW', s:skip_expr, a:lnum)