From c6b5286a3e50f74da13dd2d9f399c471116efb97 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Thu, 3 Mar 2016 12:38:39 -0800 Subject: [PATCH] vim-bufonly --- .vim/autoload/plug.vim | 40 +++++++++++++++++++++++++++++----------- .vim/keymaps.vim | 3 +++ .vim/plugins.vim | 1 + 3 files changed, 33 insertions(+), 11 deletions(-) diff --git a/.vim/autoload/plug.vim b/.vim/autoload/plug.vim index 3131ba1..25b26e2 100644 --- a/.vim/autoload/plug.vim +++ b/.vim/autoload/plug.vim @@ -149,12 +149,19 @@ function! s:to_s(v) return type(a:v) == s:TYPE.string ? a:v : join(a:v, "\n") . "\n" endfunction +function! s:glob(from, pattern) + return s:lines(globpath(a:from, a:pattern)) +endfunction + function! s:source(from, ...) + let found = 0 for pattern in a:000 - for vim in s:lines(globpath(a:from, pattern)) + for vim in s:glob(a:from, pattern) execute 'source' s:esc(vim) + let found = 1 endfor endfor + return found endfunction function! s:assoc(dict, key, val) @@ -425,9 +432,12 @@ function! s:lod(names, types, ...) for dir in a:types call s:source(rtp, dir.'/**/*.vim') endfor - for file in a:000 - call s:source(rtp, file) - endfor + if a:0 + if !s:source(rtp, a:1) && !empty(s:glob(rtp, a:2)) + execute 'runtime' a:1 + endif + call s:source(rtp, a:2) + endif if exists('#User#'.name) execute 'doautocmd User' name endif @@ -556,8 +566,10 @@ function! s:syntax() syn match plugTag /(tag: [^)]\+)/ syn match plugInstall /\(^+ \)\@<=[^:]*/ syn match plugUpdate /\(^* \)\@<=[^:]*/ - syn match plugCommit /^ [0-9a-z]\{7} .*/ contains=plugRelDate,plugSha,plugTag - syn match plugSha /\(^ \)\@<=[0-9a-z]\{7}/ contained + syn match plugCommit /^ \X*[0-9a-z]\{7} .*/ contains=plugRelDate,plugEdge,plugTag + syn match plugEdge /^ \X\+$/ + syn match plugEdge /^ \X*/ contained nextgroup=plugSha + syn match plugSha /[0-9a-z]\{7}/ contained syn match plugRelDate /([^)]*)$/ contained syn match plugNotLoaded /(not loaded)$/ syn match plugError /^x.*/ @@ -581,6 +593,7 @@ function! s:syntax() hi def link plugError Error hi def link plugRelDate Comment + hi def link plugEdge PreProc hi def link plugSha Identifier hi def link plugTag Constant @@ -1728,7 +1741,7 @@ function! s:shellesc(arg) endfunction function! s:glob_dir(path) - return map(filter(s:lines(globpath(a:path, '**')), 'isdirectory(v:val)'), 's:dirpath(v:val)') + return map(filter(s:glob(a:path, '**'), 'isdirectory(v:val)'), 's:dirpath(v:val)') endfunction function! s:progress_bar(line, bar, total) @@ -2005,7 +2018,7 @@ function! s:preview_commit() let b:plug_preview = !s:is_preview_window_open() endif - let sha = matchstr(getline('.'), '\(^ \)\@<=[0-9a-z]\{7}') + let sha = matchstr(getline('.'), '^ \X*\zs[0-9a-z]\{7}') if empty(sha) return endif @@ -2030,10 +2043,15 @@ function! s:section(flags) endfunction function! s:format_git_log(line) - let [sha, refs, subject, date] = split(a:line, nr2char(1)) + let indent = ' ' + let tokens = split(a:line, nr2char(1)) + if len(tokens) != 5 + return indent.substitute(a:line, '\s*$', '', '') + endif + let [graph, sha, refs, subject, date] = tokens let tag = matchstr(refs, 'tag: [^,)]\+') let tag = empty(tag) ? ' ' : ' ('.tag.') ' - return printf(' %s%s%s (%s)', sha, tag, subject, date) + return printf('%s%s%s%s%s (%s)', indent, graph, sha, tag, subject, date) endfunction function! s:append_ul(lnum, text) @@ -2055,7 +2073,7 @@ function! s:diff() call s:append_ul(2, origin ? 'Pending updates:' : 'Last update:') for [k, v] in plugs let range = origin ? '..origin/'.v.branch : 'HEAD@{1}..' - let diff = s:system_chomp('git log --pretty=format:"%h%x01%d%x01%s%x01%cr" '.s:shellesc(range), v.dir) + let diff = s:system_chomp('git log --graph --color=never --pretty=format:"%x01%h%x01%d%x01%s%x01%cr" '.s:shellesc(range), v.dir) if !empty(diff) let ref = has_key(v, 'tag') ? (' (tag: '.v.tag.')') : has_key(v, 'commit') ? (' '.v.commit) : '' call append(5, extend(['', '- '.k.':'.ref], map(s:lines(diff), 's:format_git_log(v:val)'))) diff --git a/.vim/keymaps.vim b/.vim/keymaps.vim index 7084a06..1a9117b 100644 --- a/.vim/keymaps.vim +++ b/.vim/keymaps.vim @@ -13,6 +13,9 @@ nnoremap - " vim-argwrap nnoremap a :ArgWrap +" vim-bufonly +nnoremap :BufOnly + " vim-easy-align vmap (EasyAlign) nmap ga (EasyAlign) diff --git a/.vim/plugins.vim b/.vim/plugins.vim index b297346..3aae060 100644 --- a/.vim/plugins.vim +++ b/.vim/plugins.vim @@ -23,6 +23,7 @@ Plug 'https://github.com/pangloss/vim-javascript.git' Plug 'https://github.com/plasticboy/vim-markdown.git' Plug 'https://github.com/rking/ag.vim.git' Plug 'https://github.com/rust-lang/rust.vim' +Plug 'https://github.com/schickling/vim-bufonly.git' Plug 'https://github.com/tomasr/molokai.git' Plug 'https://github.com/tpope/vim-abolish.git' Plug 'https://github.com/tpope/vim-bundler.git'