From f14bf4b6cdbdb0ed8ac6aa3858369ab5bbf0d787 Mon Sep 17 00:00:00 2001 From: Mark Vainomaa Date: Mon, 11 Apr 2016 19:33:20 +0300 Subject: [PATCH] Initial commit to Github --- .gitignore | 4 + PKGBUILD | 42 +++++++ README.md | 11 ++ neostrophic.install | 12 ++ neostrophic.vim | 259 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 328 insertions(+) create mode 100644 .gitignore create mode 100644 PKGBUILD create mode 100644 README.md create mode 100644 neostrophic.install create mode 100644 neostrophic.vim diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1eef1b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.pkg.tar.xz* +pkg/ +src/ +plug.vim diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..6a32023 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,42 @@ +pkgname=neostrophic +pkgver=0.1 +pkgrel=9 +epoch=1 +pkgdesc="mikroskeem's personal neovim config (read: go away)" +url="https://mikroskeem.eu/pages/neostrophic" +arch=(any) +license=(MIT) +install=neostrophic.install +depends=('neovim' # Editor itself + 'python-neovim' # Deoplete needs this + 'git' # Plugin manager dependency + 'curl' # Gist plugin needs this + 'fortune-mod' # Start screen text + 'cowsay' # Start screen text formatting + ) + +optdepends=( + 'xsel: You sure want this. Copy and paste directly to clipboard' + 'neovim-qt-git: Run Neovim in a QT GUI instead of terminal' + 'eslint: One of the dependencies for Syntastic JavaScript checker' + 'flake8: One of the dependencies for Syntastic Python checker' + 'python-pylint: One of the dependencies for Syntastic Python checker' + 'python2-pylint: One of the dependencies for Syntastic Python checker' + ) + + +source=('https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' + 'neostrophic.vim' + ) + +md5sums=('SKIP' + 'SKIP' + ) + +package () { + cd "${srcdir}" + _dir="${pkgdir}/etc/xdg/nvim" + mkdir -p ${_dir} ${_dir}/autoload + install -Dm644 plug.vim ${_dir}/autoload + install -Dm644 neostrophic.vim ${_dir}/init.vim +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..dc0d5dd --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Neostrophic + +Personal [Neovim](https://neovim.io) config + +Uses [vim-plug](https://github.com/junegunn/vim-plug) and loads of other useful plugins for me. + +This configuration isn't exactly meant for others, use at your own risk 3:) + + +## Arch Linux users +Run `makepkg -i` and enjoy diff --git a/neostrophic.install b/neostrophic.install new file mode 100644 index 0000000..4073ef0 --- /dev/null +++ b/neostrophic.install @@ -0,0 +1,12 @@ +post_install () { + post_upgrade "$@" +} + +post_upgrade () { + echo "> Note: Move/delete your ~/.config/nvim/init.vim if you have one" + echo "> Also don't forget to run ':PlugInstall' ;)" +} + +post_remove () { + echo "Don't forget to clean up \$XDG_CONFIG_DIR/nvim ;)" +} diff --git a/neostrophic.vim b/neostrophic.vim new file mode 100644 index 0000000..8e76876 --- /dev/null +++ b/neostrophic.vim @@ -0,0 +1,259 @@ +" mikroskeem's neovim config + +" Bail if config is already loaded +if exists("g:loaded_neostrophic") + finish +endif +let g:loaded_neostrophic = 1 + +" neovim-qt Guifont command +command -nargs=? Guifont call rpcnotify(0, 'Gui', 'SetFont', "") | let g:Guifont="" + +" Set options +set wildmode=longest,list,full +set completeopt-=preview +set shortmess+=cI +set noshowmode +set shortmess+=I +set nostartofline +set wrap +set textwidth=0 +set wrapmargin=0 +set background=dark +set number +set numberwidth=3 +if $DISPLAY != '' + set clipboard+=unnamedplus +endif +set showmatch +set smartcase +set ignorecase +set undofile +set undoreload=100 +set viminfo+=n$HOME/.config/nvim/tmp/viminfo +set showtabline=0 +set backup +set backupdir=$HOME/.config/nvim/tmp/backup/ +set undodir=$HOME/.config/nvim/tmp/undo/ +set directory=$HOME/.config/nvim/tmp/swap/ +set title +set cursorline +let mapleader = ',' + +function! s:center_header(lines) abort + let longest_line = max(map(copy(a:lines), 'len(v:val)')) + let centered_lines = map(copy(a:lines), + \ 'repeat(" ", (&columns / 2) - (longest_line / 2)) . v:val') + return centered_lines +endfunction + +function! s:mkdir_p(p) + if !isdirectory(expand(a:p)) + call mkdir(expand(a:p), "p") + endif +endfunction + +function! s:set_indent() + if &ft =~ 'yaml\|coffee\|vim\|jade' + set softtabstop=2 shiftwidth=2 + endif + if &ft =~ 'make' + set shiftwidth=2 tabstop=2 noexpandtab + endif +endfunction + +" Make missing dirs +silent! call s:mkdir_p(&undodir) +silent! call s:mkdir_p(&backupdir) +silent! call s:mkdir_p(&directory) + + +" Default indent settings +set softtabstop=4 +set shiftwidth=4 +set expandtab +set shiftround +set autoindent +set copyindent +" Function call below overrides previous options +" if opened filetype was defined in function +autocmd! FileType * call s:set_indent() + +" Fake $MYVIMRC +function! s:fake_vimrc() + let $MYVIMRC=$HOME . "/.config/nvim/init.vim" +endfunction + +" UpdateRemotePlugins wrapper (used in vim-plug) +function! URP(info) + if a:info.status == 'installed' + silent! call s:fake_vimrc() + silent! UpdateRemotePlugins + endif +endfunction + +" Eyecandy: loads color scheme after it's installation :3 +function! Load_color_scheme(info) + if a:info.status == 'installed' + let s = printf("colorscheme %s", a:info.name) + silent! execute s + endif +endfunction + + +" Plugin configurations +let g:airline_theme = 'powerlineish' +let g:airline#extensions#branch#enabled = 1 +let g:airline_powerline_fonts = 0 +let g:airline#extensions#whitespace#enabled = 1 +let g:airline#extensions#hunks#non_zero_only = 1 +let g:airline#extensions#tabline#enabled = 1 + +let g:bufferline_echo = 0 +let g:bufferline_modified = '*' +let g:bufferline_show_bufnr = 0 + +let g:molokai_original = 0 +let g:rehash256 = 1 + +let g:syntastic_enable_balloons = 1 +let g:syntastic_always_populate_loc_list = 1 +let g:syntastic_auto_loc_list = 1 +let g:syntastic_check_on_open = 1 +let g:syntastic_check_on_wq = 0 +let g:syntastic_mode_map = { + \ "mode": "active", + \ "active_filetypes": ["javascript", "python", "coffee", "jade", "yaml"], + \ "passive_filetypes": ["java", "c"]} +let g:syntastic_python_checkers = ['flake8', 'pylint'] +let g:syntastic_javascript_checkers = ['eslint'] +let g:syntastic_yaml_checkers = ['yamllint', 'yamlxs'] + +let g:startify_session_dir = '~/.config/nvim/startify-session' +let g:startify_custom_header = s:center_header(map(split(system('fortune | cowsay'), '\n'), '" ". v:val') + ['','']) + +let g:deoplete#enable_at_startup = 1 +let g:deoplete#enable_camel_case = 1 +let g:python3_host_prog = '/usr/bin/python3' +let g:python3_host_skip_check = 1 + +let g:NERDTreeHijackNetrw = 1 + + +let g:gitgutter_map_keys = 0 +let g:gitgutter_highlight_lines = 0 + +let g:echodoc_enable_at_startup = 1 + +let g:rainbow_active = 1 +let g:rainbow_conf = { + \ 'ctermfgs': ['red', 'lightgreen', 'lightred', 'lightblue', 'yellow']} + +" Plugins +call plug#begin('~/.config/nvim/neostrophic_plugins') +Plug 'tpope/vim-sensible' +Plug 'Konfekt/FastFold' +Plug 'Matt-Deacalion/vim-systemd-syntax', {'for': 'systemd'} +Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'} +Plug 'Shougo/context_filetype.vim' +Plug 'Shougo/deoplete.nvim', {'do': function('URP')} +Plug 'Shougo/echodoc.vim' +Plug 'Shougo/unite.vim', {'on': 'Unite' } +Plug 'Shougo/vimproc.vim', {'do': 'make'} +Plug 'airblade/vim-gitgutter' +Plug 'bling/vim-bufferline' +Plug 'digitaltoad/vim-jade', {'for': ['jade', 'pug']} +Plug 'elzr/vim-json', {'for': 'json'} +Plug 'jelera/vim-javascript-syntax', {'for': 'javascript'} +Plug 'jmcantrell/vim-virtualenv' +Plug 'junegunn/goyo.vim', {'on': 'Goyo'} +Plug 'junegunn/limelight.vim', {'on': 'Limelight'} +Plug 'junegunn/vim-easy-align', {'on': 'EasyAlign'} +Plug 'justinmk/molokai', {'do': function('Load_color_scheme')} +Plug 'kchmck/vim-coffee-script', {'for': 'coffee'} +Plug 'luochen1990/rainbow' +Plug 'majutsushi/tagbar' +Plug 'mattn/gist-vim', {'on': 'Gist'} +Plug 'mattn/webapi-vim', {'on': 'Gist'} +Plug 'matze/vim-move' +Plug 'mhinz/vim-startify' +Plug 'mikroskeem/vim-sk-syntax', {'for': 'skript'} +Plug 'nelstrom/vim-markdown-folding', {'for': 'markdown'} +Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'} +Plug 'scrooloose/syntastic' +Plug 'terryma/vim-smooth-scroll' +Plug 'tpope/vim-markdown', {'for': 'markdown'} +Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' +Plug 'vim-scripts/nginx.vim', {'for': 'nginx'} +Plug 'wavded/vim-stylus', {'for': 'stylus'} +Plug 'zchee/deoplete-jedi' +call plug#end() + + +" Goyo and Limelight +autocmd! User GoyoEnter Limelight +autocmd! User GoyoLeave Limelight! + + +" Keybinds + +" Tab controls +nnoremap :tabprevious +nnoremap :tabnext +nnoremap :tabnew +nnoremap :tabclose +" ---------------- +nnoremap :tabnew +nnoremap :tabclose +nnoremap :tabprevious +nnoremap :tabnext + + +" Commonly used commands + +" Undo +nnoremap :u +" Quit +nnoremap :q +" Just write +nnoremap :w +" Quit without writing +nnoremap :q! +" Remove search highlighting +nnoremap :noh + + +" Commands from plugins + +" File listing +nnoremap :NERDTreeToggle +" Gist +nnoremap :Gist -p +" Toggle Syntastic +nnoremap :SyntasticToggleMode +" Goyo mode +nnoremap :Goyo +" neovim term +nnoremap :term +" neovim terminal mode -> normal mode with Alt-q +tnoremap +" Unite +nnoremap :Unite +" Show/hide tags +nnoremap :TagbarToggle +" vim-easy-align +" xnoremap / nnoremap won't work here somehow +xmap ga :EasyAlign +nmap ga :EasyAlign +" vim-smooth-scroll +noremap :call smooth_scroll#up(&scroll, 0, 2) +noremap :call smooth_scroll#down(&scroll, 0, 2) +noremap :call smooth_scroll#up(&scroll*2, 0, 4) +noremap :call smooth_scroll#down(&scroll*2, 0, 4) + +" Re-apply fake $MYVIMRC +silent! call s:fake_vimrc() + +" Load color scheme (reuse function) +call Load_color_scheme({'status': 'installed', 'name': 'molokai'})