12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- " Vim indent file
- " Language: Justfile
- " Maintainer: Peter Benjamin <@pbnj>
- " Last Change: 2025 Jan 19
- " Credits: The original author, Noah Bogart <https://github.com/NoahTheDuke/vim-just/>
- " Only load this indent file when no other was loaded yet.
- if exists("b:did_indent")
- finish
- endif
- let b:did_indent = 1
- setlocal indentexpr=GetJustfileIndent()
- setlocal indentkeys=0},0),!^F,o,O,0=''',0=\"\"\"
- let b:undo_indent = "setlocal indentexpr< indentkeys<"
- if exists("*GetJustfileIndent")
- finish
- endif
- function GetJustfileIndent()
- if v:lnum < 2
- return 0
- endif
- let prev_line = getline(v:lnum - 1)
- let last_indent = indent(v:lnum - 1)
- if getline(v:lnum) =~ "\\v^\\s+%([})]|'''$|\"\"\"$)"
- return last_indent - shiftwidth()
- elseif prev_line =~ '\V#'
- return last_indent
- elseif prev_line =~ "\\v%([:{(]|^.*\\S.*%([^']'''|[^\"]\"\"\"))\\s*$"
- return last_indent + shiftwidth()
- elseif prev_line =~ '\\$'
- if v:lnum == 2 || getline(v:lnum - 2) !~ '\\$'
- if prev_line =~ '\v:\=@!'
- return last_indent + shiftwidth() + shiftwidth()
- else
- return last_indent + shiftwidth()
- endif
- endif
- elseif v:lnum > 2 && getline(v:lnum - 2) =~ '\\$'
- return last_indent - shiftwidth()
- elseif prev_line =~ '\v:\s*%(\h|\()' && prev_line !~ '\V:='
- return last_indent + shiftwidth()
- endif
- return last_indent
- endfunction
|