]> Sergey Matveev's repositories - dotfiles.git/blob - vim/.vim/pack/stargrave/start/navindent/autoload/navindent.vim
961cfa62e9c9ede0a2ff651450c0b4cb26c853ef
[dotfiles.git] / vim / .vim / pack / stargrave / start / navindent / autoload / navindent.vim
1 vim9script
2
3 # Based on https://vim.fandom.com/wiki/Move_to_next/previous_line_with_same_indentation
4
5 export def Do(step: number, diff: number)
6     var l = line(".")
7     var cin = indent(l)
8     var last = line("$")
9     var lin: number
10     while (l > 0 && l <= last)
11         l += step
12         if (strlen(getline(l)) == 0) | continue | endif
13         lin = indent(l)
14         if !(
15             ((diff == 0) && (lin == cin)) ||
16             ((diff == 1) && (lin > cin)) ||
17             ((diff == -1) && (lin < cin))
18         ) | continue | endif
19         cursor(l, lin + 1)
20         return
21     endwhile
22 enddef