forked from aniani/vim
		
	
		
			
	
	
		
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim indent file | ||
|  | " Language:	    Makefile | ||
|  | " Maintainer:	    Nikolai Weibull <source@pcppopper.org> | ||
|  | " URL:		    http://www.pcppopper.org/vim/indent/pcp/make/ | ||
|  | " Latest Revision:  2004-04-25 | ||
|  | " arch-tag:	    b539e147-a05c-4860-98af-1d2436db2f4b | ||
|  | 
 | ||
|  | " Only load this indent file when no other was loaded. | ||
|  | if exists("b:did_indent") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | let b:did_indent = 1 | ||
|  | 
 | ||
|  | setlocal indentexpr=GetMakeIndent() | ||
|  | setlocal indentkeys=!^F,o,O | ||
|  | 
 | ||
|  | " Only define the function once. | ||
|  | if exists("*GetMakeIndent") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | function s:GetStringWidth(line, str) | ||
|  |   let end = matchend(a:line, a:str) | ||
|  |   let width = 0 | ||
|  |   let i = 0 | ||
|  |   while i < end | ||
|  |     if a:line[i] != "\t" | ||
|  |       let width = width + 1 | ||
|  |     else | ||
|  |       let width = width + &ts - (width % &ts) | ||
|  |     endif | ||
|  |     let i = i + 1 | ||
|  |   endwhile | ||
|  |   return width | ||
|  | endfunction | ||
|  | 
 | ||
|  | function GetMakeIndent() | ||
|  |   if v:lnum == 1 | ||
|  |     return 0 | ||
|  |   endif | ||
|  | 
 | ||
|  |   let ind = indent(v:lnum - 1) | ||
|  |   let line = getline(v:lnum - 1) | ||
|  | 
 | ||
|  |   if line == '' | ||
|  |     let ind = 0 | ||
|  |   elseif line =~ '^[^ \t#:][^#:]*:\{1,2}\([^=:]\|$\)' | ||
|  |     let ind = ind + &ts | ||
|  |   elseif line =~ '^\s*\h\w*\s*=\s*.\+\\$' | ||
|  |     let ind = s:GetStringWidth(line, '=\s*') | ||
|  |   endif | ||
|  | 
 | ||
|  |   return ind | ||
|  | endfunction | ||
|  | 
 | ||
|  | " vim: set sts=2 sw=2: |