mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
	
	
		
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim indent file | ||
|  | " Language:    Hamster Script  | ||
|  | " Version:     2.0.6.0 | ||
|  | " Last Change: Wed Nov 08 2006 12:02:42 PM | ||
|  | " Maintainer:  David Fishburn <fishburn@ianywhere.com> | ||
|  | 
 | ||
|  | " Only load this indent file when no other was loaded. | ||
|  | if exists("b:did_indent") | ||
|  |   finish | ||
|  | endif | ||
|  | let b:did_indent = 1 | ||
|  | 
 | ||
|  | setlocal indentkeys+==~if,=~else,=~endif,=~endfor,=~endwhile | ||
|  | setlocal indentkeys+==~do,=~until,=~while,=~repeat,=~for,=~loop | ||
|  | setlocal indentkeys+==~sub,=~endsub | ||
|  | 
 | ||
|  | " Define the appropriate indent function but only once | ||
|  | setlocal indentexpr=HamGetFreeIndent() | ||
|  | if exists("*HamGetFreeIndent") | ||
|  |   finish | ||
|  | endif | ||
|  | 
 | ||
|  | function HamGetIndent(lnum) | ||
|  |   let ind = indent(a:lnum) | ||
|  |   let prevline=getline(a:lnum) | ||
|  | 
 | ||
|  |   " Add a shiftwidth to statements following if,  else, elseif, | ||
|  |   " case, select, default, do, until, while, for, start | ||
|  |   if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>'  | ||
|  |     let ind = ind + &sw | ||
|  |   endif | ||
|  | 
 | ||
|  |   " Subtract a shiftwidth from else, elseif, end(if|while|for), until | ||
|  |   let line = getline(v:lnum) | ||
|  |   if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>' | ||
|  |     let ind = ind - &sw | ||
|  |   endif | ||
|  | 
 | ||
|  |   return ind | ||
|  | endfunction | ||
|  | 
 | ||
|  | function HamGetFreeIndent() | ||
|  |   " Find the previous non-blank line | ||
|  |   let lnum = prevnonblank(v:lnum - 1) | ||
|  | 
 | ||
|  |   " Use zero indent at the top of the file | ||
|  |   if lnum == 0 | ||
|  |     return 0 | ||
|  |   endif | ||
|  | 
 | ||
|  |   let ind=HamGetIndent(lnum) | ||
|  |   return ind | ||
|  | endfunction | ||
|  | 
 | ||
|  | " vim:sw=2 tw=80 |