" Code formatting settings for Vim.
"
" To enable this for GCC files by default, you can either source this file
" in your .vimrc via autocmd:
"   :au BufNewFile,BufReadPost path/to/gcc/* :so path/to/gcc/contrib/vimrc
" or source the script manually for each newly opened file:
"   :so contrib/vimrc
" You could also use numerous plugins that enable local vimrc e.g.
" mbr's localvimrc or thinca's vim-localrc (but note that the latter
" is much less secure). To install local vimrc config, run
"   $ make vimrc
" from GCC build folder.
" 
" Copyright (C) 2014-2023 Free Software Foundation, Inc.
"
" This program is free software; you can redistribute it and/or modify
" it under the terms of the GNU General Public License as published by
" the Free Software Foundation; either version 3 of the License, or
" (at your option) any later version.
"
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
" GNU General Public License for more details.
"
" You should have received a copy of the GNU General Public License
" along with this program.  If not, see <http://www.gnu.org/licenses/>.

function! SetStyle()
  let l:fname = expand("%:p")
  let l:ext = fnamemodify(l:fname, ":e")
  let l:c_exts = ['c', 'h', 'cpp', 'cc', 'C', 'H', 'def', 'java']
  if stridx(l:fname, 'libsanitizer') != -1
    return
  endif
  if l:ext != "py"
    setlocal tabstop=8
    setlocal softtabstop=2
    setlocal shiftwidth=2
    setlocal noexpandtab
  endif
  if &filetype == "gitcommit"
    setlocal textwidth=72
  else
    setlocal textwidth=79
  endif
  setlocal formatoptions-=ro formatoptions+=cqlt
  if index(l:c_exts, l:ext) != -1 || &filetype == "c" || &filetype == "cpp"
    setlocal cindent
    setlocal cinoptions=>4,n-2,{2,^-2,:2,=2,g0,f0,h2,p4,t0,+2,(0,u0,w1,m0
  endif
endfunction

call SetStyle()
