" Copyright (c) 2007-2008 Sean C. Farley " All rights reserved. " " Redistribution and use in source and binary forms, with or without " modification, are permitted provided that the following conditions " are met: " 1. Redistributions of source code must retain the above copyright " notice, this list of conditions and the following disclaimer, " without modification, immediately at the beginning of the file. " 2. Redistributions in binary form must reproduce the above copyright " notice, this list of conditions and the following disclaimer in the " documentation and/or other materials provided with the distribution. " " THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR " IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES " OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. " IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, " INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT " NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, " DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY " THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT " (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF " THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. " " $FreeBSD$ " This is a plugin for Vim (tested with Vim v7.1) to follow the FreeBSD style(9) " indentation. It registers a macro (see below) for changing a buffer's " indentation rules but does not change the indentation of existing code. " Load only once. if exists('loaded_FreeBSD') finish endif let loaded_FreeBSD = 1 " FreeBSD mapping to switch current buffer to style(9). This is generally '\f'. nmap f :call FreeBSD_Style() " Ignore indents caused by parentheses in FreeBSD style. function! IgnoreParenIndent() let indent = cindent(v:lnum) if indent > 4000 if cindent(v:lnum - 1) > 4000 return indent(v:lnum - 1) else return indent(v:lnum - 1) + 4 endif else return (indent) endif endfun " Follow the FreeBSD style(9). function! FreeBSD_Style() setlocal cindent setlocal cinoptions=(4200,u4200,+0.5s,*500,:0,t0,U4200 setlocal indentexpr=IgnoreParenIndent() setlocal indentkeys=0{,0},0),:,0#,!^F,o,O,e setlocal noexpandtab setlocal shiftwidth=8 setlocal tabstop=8 setlocal textwidth=80 endfun