diff options
Diffstat (limited to 'autoload/make/target.vim')
-rw-r--r-- | autoload/make/target.vim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/autoload/make/target.vim b/autoload/make/target.vim new file mode 100644 index 0000000..e3c0861 --- /dev/null +++ b/autoload/make/target.vim @@ -0,0 +1,32 @@ +" Function to make the target for the recipe under the cursor +function! make#target#Make() abort + + " Declare list of targets to build + let l:targets = [] + + " Iterate back through the file starting at the current line looking for the + " line with the target + for l:li in reverse(range(1, line('.'))) + let l:line = getline(l:li) + + " If it matches the target format, we've found our line; split the targets + " by space, and break + let l:matchlist = matchlist(l:line, '^\([^:= \t][^:=]*\):') + if len(l:matchlist) + let l:targets = split(l:matchlist[1], '\s\+') + break + + " If it wasn't the target line and doesn't have leading tabs, we're not in + " a recipe block; break with an unset target + elseif strpart(l:line, 0, 1) !=# "\t" + break + endif + + endfor + + " If we found targets, :make them + for l:target in l:targets + execute 'make! '.l:target + endfor + +endfunction |