" URL: http://vim.wikia.com/wiki/Example_vimrc
" Authors: http://vim.wikia.com/wiki/Vim_on_Freenode
" Description: A minimal, but feature rich, example .vimrc. If you are a
"              newbie, basing your first .vimrc on this file is a good choice.
"              If you're a more advanced user, building your own .vimrc based
"              on this file is still a good idea.
 
"------------------------------------------------------------
" Features {{{1
"
" These options and commands enable some very useful features in Vim, that
" no user should have to live without.
 
" Set 'nocompatible' to ward off unexpected things that your distro might
" have made, as well as sanely reset options when re-sourcing .vimrc
set nocompatible

"------------ PLUGIN MANAGER --------------------------------

call plug#begin('~/.local/share/nvim/site/plugged')

" Color themes:
Plug 'michalbachowski/vim-wombat256mod'
Plug 'altercation/vim-colors-solarized'
Plug 'mhartington/oceanic-next'
Plug 'freeo/vim-kalisi'

" Utility plugins:

Plug 'https://github.com/dhruvasagar/vim-table-mode'

" C++ dev plugins:
Plug 'https://github.com/vim-scripts/a.vim.git'

Plug 'scrooloose/nerdtree'

Plug 'vim-airline/vim-airline'

" Plug 'xolox/vim-misc'
" Plug 'xolox/vim-easytags'

" Plug 'jeaye/color_coded' " !! Not yet supported on nvim

Plug 'Valloric/YouCompleteMe'
" Plug 'davits/DyeVim'

" Plug 'gilligan/vim-lldb'
Plug 'critiqjo/lldb.nvim'

"Plug 'ap/vim-buftabline'

"Plug 'arakashic/chromatica.nvim'

call plug#end()

"---------------------------------------------------------



" Attempt to determine the type of a file based on its name and possibly its
" contents. Use this to allow intelligent auto-indenting for each filetype,
" and for plugins that are filetype specific.
filetype indent plugin on
 
" Enable syntax highlighting
syntax on
 
 
"------------------------------------------------------------
" Must have options {{{1
"
" These are highly recommended options.
 
" Vim with default settings does not allow easy switching between multiple files
" in the same editor window. Users can use multiple split windows or multiple
" tab pages to edit multiple files, but it is still best to enable an option to
" allow easier switching between files.
"
" One such option is the 'hidden' option, which allows you to re-use the same
" window and switch from an unsaved buffer without saving it first. Also allows
" you to keep an undo history for multiple files when re-using the same window
" in this way. Note that using persistent undo also lets you undo in multiple
" files even in the same window, but is less efficient and is actually designed
" for keeping undo history after closing Vim entirely. Vim will complain if you
" try to quit without saving, and swap files will keep you safe if your computer
" crashes.
set hidden
 
" Note that not everyone likes working this way (with the hidden option).
" Alternatives include using tabs or split windows instead of re-using the same
" window as mentioned above, and/or either of the following options:
" set confirm
" set autowriteall
 
" Better command-line completion
set wildmenu
 
" Show partial commands in the last line of the screen
set showcmd
 
" Highlight searches (use <C-L> to temporarily turn off highlighting; see the
" mapping of <C-L> below)
set hlsearch
 
" Modelines have historically been a source of security vulnerabilities. As
" such, it may be a good idea to disable them and use the securemodelines
" script, <http://www.vim.org/scripts/script.php?script_id=1876>.
" set nomodeline
 
 
"------------------------------------------------------------
" Usability options {{{1
"
" These are options that users frequently set in their .vimrc. Some of them
" change Vim's behaviour in ways which deviate from the true Vi way, but
" which are considered to add usability. Which, if any, of these options to
" use is very much a personal preference, but they are harmless.
 
" Use case insensitive search, except when using capital letters
set ignorecase
set smartcase
 
" Allow backspacing over autoindent, line breaks and start of insert action
set backspace=indent,eol,start
 
" When opening a new line and no filetype-specific indenting is enabled, keep
" the same indent as the line you're currently on. Useful for READMEs, etc.
set noautoindent
 
" Stop certain movements from always going to the first character of a line.
" While this behaviour deviates from that of Vi, it does what most users
" coming from other editors would expect.
set nostartofline
 
" Display the cursor position on the last line of the screen or in the status
" line of a window
set ruler
 
" Always display the status line, even if only one window is displayed
set laststatus=2
 
" Instead of failing a command because of unsaved changes, instead raise a
" dialogue asking if you wish to save changed files.
set confirm
 
" Use visual bell instead of beeping when doing something wrong
set visualbell
 
" And reset the terminal code for the visual bell. If visualbell is set, and
" this line is also included, vim will neither flash nor beep. If visualbell
" is unset, this does nothing.
set t_vb=
 
" Enable use of the mouse for all modes
set mouse=a
 
" Set the command window height to 2 lines, to avoid many cases of having to
" "press <Enter> to continue"
set cmdheight=2
 
" Display line numbers on the left
set number
 
" Quickly time out on keycodes, but never time out on mappings
set notimeout ttimeout ttimeoutlen=200
 
" Use <F11> to toggle between 'paste' and 'nopaste'
set pastetoggle=<F11>

" Determine splitting behavior
set splitbelow
set splitright
 
"------------------------------------------------------------
" Indentation options {{{1
"
" Indentation settings according to personal preference.
 
" Indentation settings for using 4 spaces instead of tabs.
" Do not change 'tabstop' from its default value of 8 with this setup.
set shiftwidth=4
set softtabstop=4
set expandtab
 
" Indentation settings for using hard tabs for indent. Display tabs as
" four characters wide.
"set shiftwidth=4
"set tabstop=4
 
 
"------------------------------------------------------------
" Mappings {{{1

source $HOME/.config/nvim/keyboard.vim

"------------------------------------------------------------

" syn match        namedComment     "//.*"
" syn match        namedComment     "#.*"
" syn region       namedComment     start="/\*" end="\*/"

set noautoindent

" hi def link  namedComment   Comment

" Disable automatic comment insertion on next line
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o

autocmd BufRead,BufNewFile /etc/httpd/vhosts/* set filetype=apache
autocmd BufRead,BufNewFile /home/srv/httpd/vhosts/* set filetype=apache

if (has("termguicolors"))
" set termguicolors
endif

set t_Co=256

let g:chromatica#highlight_feature_level=1

let g:airline#extensions#tabline#enabled = 1
let g:airline_powerline_fonts = 1

" YouCompleteMe settings:

let g:ycm_autoclose_preview_window_after_completion = 0
let g:ycm_autoclose_preview_window_after_insertion = 1

" Change color theme
"color industry
" colorscheme wombat256mod
let g:solarized_termcolors=256
set background=dark
" colorscheme solarized
colorscheme OceanicNext
let g:airline_theme = 'oceanicnext'

:set tags=./tags;
:let g:easytags_dynamic_files = 1
:let g:easytags_async = 1
:let g:easytags_cmd = ''
:let g:easytags_include_members=1
:let g:easytags_python_enabled=1

" Recursively read project specific settings file

:let currdir = systemlist('readlink -m .')[0]
:while currdir != '/'
    :let nvimrcfile = currdir . '/.nvimrc'
    :if filereadable(currdir . "/.nvimrc")
        :execute 'source '.fnameescape(nvimrcfile)
    :endif
    :let currdir = systemlist('readlink -m '. currdir . '/..')[0]
:endwhile

" Load user defined functions
source $HOME/.config/nvim/functions.vim

" autocmd VimEnter * PullConf
