Merge github with local changes at workplace
This commit is contained in:
commit
2cb25c9c5b
4 changed files with 354 additions and 192 deletions
68
bashrc
68
bashrc
|
@ -23,5 +23,71 @@ stty -ixon
|
||||||
# Enable Vi editing mode
|
# Enable Vi editing mode
|
||||||
set -o vi
|
set -o vi
|
||||||
|
|
||||||
PS1='\[\033[00;34m\]┌─╼ \[\033[00;33m\]\$ \[\033[01;35m\]\u\[\033[00;34m\]@\[\033[01;35m\]\h\[\033[01;34m\] `date +%d.%m.%y` \[\033[01;35m\]\w\[\033[00m\]
|
git__prompt () {
|
||||||
|
git rev-parse --show-toplevel > /dev/null 2>&1
|
||||||
|
if [ $? = 0 ]
|
||||||
|
then
|
||||||
|
branch=`git branch | grep -Po '(?<=\* )[[:alnum:]]*'`
|
||||||
|
modif=`git status --short 2>/dev/null | grep -Po '^\s*M' | wc -l`
|
||||||
|
untracked=`git status --short 2>/dev/null | grep -Po '^\?\?' | wc -l`
|
||||||
|
added=`git status --short 2>/dev/null | grep -Po '^\s*A' | wc -l`
|
||||||
|
deleted=`git status --short 2>/dev/null | grep -Po '^\s*D' | wc -l`
|
||||||
|
stat=`git branch -vv | grep -P '^\*' | grep -Po '\[.*\]'`
|
||||||
|
ahead=`echo $stat | grep -Po '(?<=ahead )\d*'`
|
||||||
|
behind=`echo $stat | grep -Po '(?<=behind )\d*'`
|
||||||
|
gray='\033[01;30m'
|
||||||
|
blue='\033[01;34m'
|
||||||
|
yellow='\033[01;33m'
|
||||||
|
red='\033[01;31m'
|
||||||
|
green='\033[01;32m'
|
||||||
|
|
||||||
|
if [ -z $branch ]
|
||||||
|
then
|
||||||
|
branch='#'`git rev-parse --short HEAD`
|
||||||
|
fi
|
||||||
|
if [ $branch = 'master' ]
|
||||||
|
then
|
||||||
|
echo -ne " $blue$branch"
|
||||||
|
elif [ ${branch:0:1} = '#' ]
|
||||||
|
then
|
||||||
|
echo -ne " $red$branch"
|
||||||
|
else
|
||||||
|
echo -ne " $yellow$branch"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $modif = 0 ]
|
||||||
|
then
|
||||||
|
echo -ne # "$gray:\033[01;36m$modif" # No modified files
|
||||||
|
else
|
||||||
|
echo -ne "$gray:\033[01;33m$modif" # Modified files
|
||||||
|
fi
|
||||||
|
if [ $added -ne 0 ]
|
||||||
|
then
|
||||||
|
echo -ne "${green}+$added"
|
||||||
|
fi
|
||||||
|
if [ $deleted -ne 0 ]
|
||||||
|
then
|
||||||
|
echo -ne "${red}-$deleted"
|
||||||
|
fi
|
||||||
|
if [ $untracked -ne 0 ]
|
||||||
|
then
|
||||||
|
echo -ne "${red}*"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $ahead ] && [ -z $behind ]
|
||||||
|
then
|
||||||
|
echo -ne "" # Nothing to do here
|
||||||
|
elif [ -z $ahead ]
|
||||||
|
then
|
||||||
|
echo -ne "${gray}:${yellow}↓${behind}"
|
||||||
|
elif [ -z $behind ]
|
||||||
|
then
|
||||||
|
echo -ne "${gray}:${green}↑${ahead}"
|
||||||
|
else
|
||||||
|
echo -ne "${gray}:${red}↓${behind}${yellow}↑${ahead}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
PS1='\[\033[00;34m\]┌─╼ \[\033[00;33m\]\$ \[\033[01;35m\]\u\[\033[00;34m\]@\[\033[01;35m\]\h\[\033[01;34m\] `date +%d.%m.%y` \[\033[01;35m\]\w`git__prompt`\[\033[00m\]
|
||||||
\[\033[00;34m\]└╼ \[\033[00m\]'
|
\[\033[00;34m\]└╼ \[\033[00m\]'
|
||||||
|
|
75
conky.conf
Normal file
75
conky.conf
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
-- vim: set filetype=lua :miv --
|
||||||
|
conky.config = {
|
||||||
|
double_buffer = true,
|
||||||
|
update_interval = 1,
|
||||||
|
alignment = 'bottom_right',
|
||||||
|
gap_x = 100 + 320,
|
||||||
|
gap_y = 100 + 200,
|
||||||
|
own_window = true,
|
||||||
|
own_window_title = 'conky',
|
||||||
|
own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
|
||||||
|
own_window_argb_visual = true,
|
||||||
|
own_window_transparent = true,
|
||||||
|
border_inner_margin = 8,
|
||||||
|
background = true,
|
||||||
|
border_width = 1,
|
||||||
|
cpu_avg_samples = 2,
|
||||||
|
draw_borders = false,
|
||||||
|
draw_graph_borders = true,
|
||||||
|
draw_outline = false,
|
||||||
|
draw_shades = false,
|
||||||
|
use_xft = true,
|
||||||
|
font = 'Quicksand:size=14',
|
||||||
|
minimum_height = 5,
|
||||||
|
minimum_width = 250,
|
||||||
|
net_avg_samples = 2,
|
||||||
|
no_buffers = false,
|
||||||
|
out_to_console = false,
|
||||||
|
out_to_stderr = false,
|
||||||
|
extra_newline = false,
|
||||||
|
stippled_borders = 0,
|
||||||
|
uppercase = false,
|
||||||
|
use_spacer = 'none',
|
||||||
|
show_graph_scale = false,
|
||||||
|
show_graph_range = false,
|
||||||
|
default_color = '#666666',
|
||||||
|
color1 = "#664444",
|
||||||
|
color2 = "#888888",
|
||||||
|
color3 = "#663333"
|
||||||
|
}
|
||||||
|
conky.text = [[$color3${time %Y-%m-%d}
|
||||||
|
$color1${voffset -10}${font Quicksand:size=40}${time %H:%M}$font$color
|
||||||
|
${color2}Uptime:$color $alignr$uptime
|
||||||
|
#
|
||||||
|
${color3}Stats $hr$color
|
||||||
|
${color2}ip:$color $alignr${texeci 3 wget http://darkwiiplayer.com/api/ip --no-check-certificate -qO - }
|
||||||
|
${color2}vpn:$color $alignr${execi 2 expressvpn status | grep -Po 'Not connected|(?<=Connected to).*$'}
|
||||||
|
#
|
||||||
|
#${color3}Location $hr$color
|
||||||
|
#${color2}ip:$color $alignr${execi 2 ~/.bin/location}
|
||||||
|
#
|
||||||
|
${color3}Ping $hr
|
||||||
|
${color2}Google: $color$alignr${execi 2 ping google.de -c 1 | grep -Po '(?<=time=).*'}
|
||||||
|
${color2}Server: $color$alignr${execi 2 ping darkwiiplayer.com -c 1 | grep -Po '(?<=time=).*'}
|
||||||
|
#
|
||||||
|
${color3}CPU $hr
|
||||||
|
$color$cpu%$color2 CPU Usage
|
||||||
|
$color${cpubar 8}$color
|
||||||
|
${color2}Frequency:$color $alignr$freq_g GHz
|
||||||
|
#
|
||||||
|
${color3}Memory $hr$color
|
||||||
|
$color$memperc%${color2} RAM Usage
|
||||||
|
$color${membar 8}$color
|
||||||
|
$mem / $memmax
|
||||||
|
${color2}Processes:$color $processes ${color2}Running:$color $running_processes
|
||||||
|
#
|
||||||
|
${color3}Storage $hr
|
||||||
|
${color2}root $alignr$color${fs_used /}/${fs_size /}
|
||||||
|
$color${fs_bar 8 /}
|
||||||
|
${color2}data $alignr$color${fs_used /data}/${fs_size /data}
|
||||||
|
$color${fs_bar 8 /data}
|
||||||
|
#
|
||||||
|
${color3}Networking $hr
|
||||||
|
${color2}Up:$color ${upspeed enp3s0} ${color2} - Down:$color ${downspeed enp3s0}
|
||||||
|
${font Hack:size=10}$color2$alignc${execi 1000 whoami}@${execi 1000 hostname}
|
||||||
|
]]
|
209
git.vim
Normal file
209
git.vim
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
" ┌─────────────────┐ "
|
||||||
|
" └─┬─┬───┬─┬───┬─┬─┘ "
|
||||||
|
" │ │ │ │ │ │ "
|
||||||
|
" │ │ │ │ │ │ "
|
||||||
|
" ┌─┴─┴───┴─┴───┴─┴─┐ "
|
||||||
|
" ┌┘ Git Stuff └┐ "
|
||||||
|
" └───────────────────┘ "
|
||||||
|
|
||||||
|
" Find the root of a git repository
|
||||||
|
function! s:gitroot()
|
||||||
|
let l:ret = substitute(system('git rev-parse --show-toplevel'), '\n\_.*', '', '')
|
||||||
|
if v:shell_error
|
||||||
|
throw l:ret
|
||||||
|
else
|
||||||
|
return l:ret
|
||||||
|
end
|
||||||
|
endf
|
||||||
|
|
||||||
|
function! s:git_root(path)
|
||||||
|
let l:path = fnamemodify(a:path, ':p')
|
||||||
|
let l:wd = getcwd()
|
||||||
|
if isdirectory(l:path)
|
||||||
|
exec 'cd '.a:path
|
||||||
|
elseif filereadable(l:path)
|
||||||
|
exec 'cd '.fnamemodify(l:path, ':h')
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
let l:ret = substitute(system('git rev-parse --show-toplevel'), '\n\_.*', '', '')
|
||||||
|
if v:shell_error
|
||||||
|
echom l:ret
|
||||||
|
exec 'cd '.l:wd
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
exec 'cd '.l:wd
|
||||||
|
return l:ret
|
||||||
|
end
|
||||||
|
exec 'cd '.l:wd
|
||||||
|
endf
|
||||||
|
|
||||||
|
" Returns an array containing chronologically sorted commits
|
||||||
|
function! s:git_history()
|
||||||
|
if exists("b:git_history")
|
||||||
|
if b:git_history[0]+10 > localtime()
|
||||||
|
return b:git_history[1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if exists("b:git_original_file") " Is this already a file@revision buffer?
|
||||||
|
let l:fname = b:git_original_file
|
||||||
|
else
|
||||||
|
let l:fname = substitute(expand("%"), "\\\\", "/", "g")
|
||||||
|
end
|
||||||
|
let l:commits = system('git log --format="%h" '.l:fname)
|
||||||
|
let l:hist = split(l:commits, "\n")
|
||||||
|
let b:git_history = [localtime(), l:hist]
|
||||||
|
|
||||||
|
return l:hist
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_first()
|
||||||
|
if &modified
|
||||||
|
throw "File has unsaved modifications!"
|
||||||
|
end
|
||||||
|
call s:file_at_revision(get(s:git_history(), -1))
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_last()
|
||||||
|
if &modified
|
||||||
|
throw "File has unsaved modifications!"
|
||||||
|
end
|
||||||
|
call s:file_at_revision(get(s:git_history(), 1, "HEAD"))
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_info()
|
||||||
|
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
||||||
|
echo "Not a file@revision buffer!"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
echo system("git show --no-patch ".b:git_revision_hash)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_next()
|
||||||
|
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
||||||
|
echo "Error 01: Not a file@revision buffer!"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
let l:history = s:git_history()
|
||||||
|
let l:idx = index(l:history, b:git_revision_hash)
|
||||||
|
if l:idx == -1
|
||||||
|
echo "Error 02"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
let l:new_revision = get(l:history, l:idx-1, "LAST")
|
||||||
|
if l:new_revision=="LAST"
|
||||||
|
throw "Already at last revision!"
|
||||||
|
else
|
||||||
|
call s:file_at_revision(l:new_revision)
|
||||||
|
end
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_prev()
|
||||||
|
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
||||||
|
let l:new_revision = s:git_history()[0]
|
||||||
|
else
|
||||||
|
let l:history = s:git_history()
|
||||||
|
let l:idx = index(l:history, b:git_revision_hash)
|
||||||
|
if l:idx == -1
|
||||||
|
echo "Error 03: cannot find revision ".b:git_revision_hash
|
||||||
|
return
|
||||||
|
end
|
||||||
|
let l:new_revision = get(l:history, l:idx+1, "FIRST")
|
||||||
|
end
|
||||||
|
if l:new_revision=="FIRST"
|
||||||
|
throw "Already at earliest revision!"
|
||||||
|
else
|
||||||
|
call s:file_at_revision(l:new_revision)
|
||||||
|
end
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:file_at_revision(rev)
|
||||||
|
let l:pos = getpos(".")
|
||||||
|
if exists("b:git_original_file") " Is this already a file@revision buffer?
|
||||||
|
let l:fname = b:git_original_file
|
||||||
|
let l:ftail = fnamemodify(b:git_original_file, ":t")
|
||||||
|
else
|
||||||
|
let l:fname = expand("%")
|
||||||
|
let l:ftail = expand("%:t")
|
||||||
|
end
|
||||||
|
let l:fname = substitute(l:fname, "\\\\", "/", "g")
|
||||||
|
let l:ftype = &filetype
|
||||||
|
|
||||||
|
ene!
|
||||||
|
set modifiable
|
||||||
|
silent exec "file ".l:ftail."@".a:rev
|
||||||
|
exec "r!git show ".a:rev.":".l:fname
|
||||||
|
1,1del
|
||||||
|
let l:pos[0] = bufnr('.')
|
||||||
|
call setpos('.', l:pos)
|
||||||
|
setl nomodifiable
|
||||||
|
setl buftype=nofile
|
||||||
|
setl bufhidden=delete
|
||||||
|
let &filetype = l:ftype
|
||||||
|
|
||||||
|
let b:git_original_file = l:fname
|
||||||
|
let b:git_revision_hash = a:rev
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_diff(...)
|
||||||
|
if a:0
|
||||||
|
vert bot split
|
||||||
|
call s:file_at_revision(a:1)
|
||||||
|
diffthis
|
||||||
|
au BufUnload <buffer> diffoff!
|
||||||
|
exec "normal \<C-w>\<C-p>"
|
||||||
|
diffthis
|
||||||
|
call s:git_info()
|
||||||
|
else
|
||||||
|
if exists("b:git_revision_hash")
|
||||||
|
call s:git_diff(get(s:git_history(), index(s:git_history(), b:git_revision_hash)+1, "NIL"))
|
||||||
|
else
|
||||||
|
call s:git_diff(get(s:git_history(), 0, "HEAD"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
endfun
|
||||||
|
|
||||||
|
function! s:git_blame()
|
||||||
|
let l:name = expand('%')
|
||||||
|
let l:line = getpos('.')[1]
|
||||||
|
let l:char = getpos('.')[2]+59
|
||||||
|
let l:type = &filetype
|
||||||
|
enew
|
||||||
|
set modifiable
|
||||||
|
let &filetype = l:type
|
||||||
|
set buftype=nofile
|
||||||
|
set bufhidden=delete
|
||||||
|
set nowrap
|
||||||
|
silent exec "file Blame: ".l:name
|
||||||
|
keepjumps exec 'r !git blame '.l:name
|
||||||
|
keepjumps 0,0del "
|
||||||
|
set nomodifiable
|
||||||
|
keepjumps call setpos('.', [0, l:line, l:char, 0])
|
||||||
|
endfun
|
||||||
|
|
||||||
|
command! Blame try
|
||||||
|
\| call s:gitroot() | call <sid>git_blame()
|
||||||
|
\| catch | echo 'Not a git repo!'
|
||||||
|
\| endtry
|
||||||
|
command! GitNext try
|
||||||
|
\| call s:gitroot() | call <sid>git_next() | call s:git_info()
|
||||||
|
\| catch | echo 'Not a git repo!'
|
||||||
|
\| endtry
|
||||||
|
command! GitPrev call <sid>git_prev() | call s:git_info()
|
||||||
|
command! GitFirst call <sid>git_first() | call s:git_info()
|
||||||
|
command! GitLast call <sid>git_last() | call s:git_info()
|
||||||
|
command! GitInfo call <sid>git_info()
|
||||||
|
command! -nargs=1 GitCheckout call <sid>file_at_revision(<f-args>)
|
||||||
|
command! -nargs=? GitCompare try
|
||||||
|
\| call s:gitroot() | call <sid>git_diff(<f-args>)
|
||||||
|
\| catch | echo 'Not a git repo!'
|
||||||
|
\| endtry
|
||||||
|
command! Uncommited try
|
||||||
|
\| call s:gitroot() | call <sid>git_diff()
|
||||||
|
\| catch | echo 'Not a git repo!'
|
||||||
|
\| endtry
|
||||||
|
command! GitRoot try
|
||||||
|
\| echo <sid>gitroot()
|
||||||
|
\| catch | echo 'Not a git repository'
|
||||||
|
\| endtry
|
194
vimrc
194
vimrc
|
@ -1,6 +1,8 @@
|
||||||
" vim: set bufhidden=delete list noexpandtab :miv "
|
" vim: set bufhidden=delete list noexpandtab :miv "
|
||||||
"!!! makes use of marker '
|
"!!! makes use of marker '
|
||||||
|
|
||||||
|
let s:root = expand('<sfile>:p:h')
|
||||||
|
|
||||||
set nocompatible
|
set nocompatible
|
||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|
||||||
|
@ -368,197 +370,7 @@ command! -nargs=* Hex call <sid>hex(<q-args>)
|
||||||
|
|
||||||
command! -range=% LuaCompile <line1>,<line2>w !luac -l -p -
|
command! -range=% LuaCompile <line1>,<line2>w !luac -l -p -
|
||||||
|
|
||||||
" ┌─────────────────┐
|
exec 'so '.s:root.'/git.vim'
|
||||||
" └─┬─┬───┬─┬───┬─┬─┘
|
|
||||||
" │ │ │ │ │ │
|
|
||||||
" │ │ │ │ │ │
|
|
||||||
" ┌─┴─┴───┴─┴───┴─┴─┐
|
|
||||||
" ┌┘ Git Stuff └┐
|
|
||||||
" └───────────────────┘
|
|
||||||
|
|
||||||
function! s:gitroot()
|
|
||||||
let s:ret = substitute(system('git rev-parse --show-toplevel'), '\n\_.*', '', '')
|
|
||||||
if v:shell_error
|
|
||||||
throw s:ret
|
|
||||||
else
|
|
||||||
return s:ret
|
|
||||||
end
|
|
||||||
endf
|
|
||||||
|
|
||||||
function! s:git_history()
|
|
||||||
if exists("b:git_history")
|
|
||||||
if b:git_history[0]+10 > localtime()
|
|
||||||
return b:git_history[1]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if exists("b:git_original_file") " Is this already a file@revision buffer?
|
|
||||||
let l:fname = b:git_original_file
|
|
||||||
else
|
|
||||||
let l:fname = substitute(expand("%"), "\\\\", "/", "g")
|
|
||||||
end
|
|
||||||
let l:commits = system('git log --format="%h" '.l:fname)
|
|
||||||
let l:hist = split(l:commits, "\n")
|
|
||||||
let b:git_history = [localtime(), l:hist]
|
|
||||||
|
|
||||||
return l:hist
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_first()
|
|
||||||
if &modified
|
|
||||||
echo "Save your changes first!"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
let l:history = s:git_history()
|
|
||||||
call s:file_at_revision(get(l:history, -1))
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_last()
|
|
||||||
if &modified
|
|
||||||
echo "Save your changes first!"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
let l:history = s:git_history()
|
|
||||||
call s:file_at_revision(get(l:history, 1, "HEAD"))
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_info()
|
|
||||||
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
|
||||||
echo "Not a file@revision buffer!"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
echo system("git show --no-patch ".b:git_revision_hash)
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_next()
|
|
||||||
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
|
||||||
echo "Error 01: Not a file@revision buffer!"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
let l:history = s:git_history()
|
|
||||||
let l:idx = index(l:history, b:git_revision_hash)
|
|
||||||
if l:idx == -1
|
|
||||||
echo "Error 02"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
let l:new_revision = get(l:history, l:idx-1, "LAST")
|
|
||||||
if l:new_revision=="LAST"
|
|
||||||
echo "Already at latest revision! ".l:new_revision
|
|
||||||
return
|
|
||||||
else
|
|
||||||
call s:file_at_revision(l:new_revision)
|
|
||||||
end
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_prev()
|
|
||||||
if !exists("b:git_revision_hash") || !exists("b:git_original_file")
|
|
||||||
let l:new_revision = s:git_history()[0]
|
|
||||||
else
|
|
||||||
let l:history = s:git_history()
|
|
||||||
let l:idx = index(l:history, b:git_revision_hash)
|
|
||||||
if l:idx == -1
|
|
||||||
echo "Error 03: cannot find revision ".b:git_revision_hash
|
|
||||||
return
|
|
||||||
end
|
|
||||||
let l:new_revision = get(l:history, l:idx+1, "FIRST")
|
|
||||||
end
|
|
||||||
if l:new_revision=="FIRST"
|
|
||||||
echo "Already at earliest revision! ".l:new_revision
|
|
||||||
return
|
|
||||||
else
|
|
||||||
call s:file_at_revision(l:new_revision)
|
|
||||||
end
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:file_at_revision(rev)
|
|
||||||
let l:pos = getpos(".")
|
|
||||||
if exists("b:git_original_file") " Is this already a file@revision buffer?
|
|
||||||
let l:fname = b:git_original_file
|
|
||||||
let l:ftail = fnamemodify(b:git_original_file, ":t")
|
|
||||||
else
|
|
||||||
let l:fname = expand("%")
|
|
||||||
let l:ftail = expand("%:t")
|
|
||||||
end
|
|
||||||
let l:fname = substitute(l:fname, "\\\\", "/", "g")
|
|
||||||
let l:ftype = &filetype
|
|
||||||
|
|
||||||
ene!
|
|
||||||
set modifiable
|
|
||||||
silent exec "file ".l:ftail."@".a:rev
|
|
||||||
exec "r!git show ".a:rev.":".l:fname
|
|
||||||
1,1del
|
|
||||||
let l:pos[0] = bufnr('.')
|
|
||||||
call setpos('.', l:pos)
|
|
||||||
setl nomodifiable
|
|
||||||
setl buftype=nofile
|
|
||||||
setl bufhidden=delete
|
|
||||||
let &filetype = l:ftype
|
|
||||||
|
|
||||||
let b:git_original_file = l:fname
|
|
||||||
let b:git_revision_hash = a:rev
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_diff(...)
|
|
||||||
if a:0
|
|
||||||
vert bot split
|
|
||||||
call s:file_at_revision(a:1)
|
|
||||||
diffthis
|
|
||||||
au BufUnload <buffer> diffoff!
|
|
||||||
exec "normal \<C-w>\<C-p>"
|
|
||||||
diffthis
|
|
||||||
call s:git_info()
|
|
||||||
else
|
|
||||||
if exists("b:git_revision_hash")
|
|
||||||
call s:git_diff(get(s:git_history(), index(s:git_history(), b:git_revision_hash)+1, "NIL"))
|
|
||||||
else
|
|
||||||
call s:git_diff(get(s:git_history(), 0, "HEAD"))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
endfun
|
|
||||||
|
|
||||||
function! s:git_blame()
|
|
||||||
let l:name = expand('%')
|
|
||||||
let l:line = getpos('.')[1]
|
|
||||||
let l:char = getpos('.')[2]+59
|
|
||||||
let l:type = &filetype
|
|
||||||
enew
|
|
||||||
set modifiable
|
|
||||||
let &filetype = l:type
|
|
||||||
set buftype=nofile
|
|
||||||
set bufhidden=delete
|
|
||||||
set nowrap
|
|
||||||
silent exec "file Blame: ".l:name
|
|
||||||
keepjumps exec 'r !git blame '.l:name
|
|
||||||
keepjumps 0,0del "
|
|
||||||
set nomodifiable
|
|
||||||
keepjumps call setpos('.', [0, l:line, l:char, 0])
|
|
||||||
endfun
|
|
||||||
|
|
||||||
command! Blame try
|
|
||||||
\| call s:gitroot() | call <sid>git_blame()
|
|
||||||
\| catch | echo 'Not a git repo!'
|
|
||||||
\| endtry
|
|
||||||
command! GitNext try
|
|
||||||
\| call s:gitroot() | call <sid>git_next() | call s:git_info()
|
|
||||||
\| catch | echo 'Not a git repo!'
|
|
||||||
\| endtry
|
|
||||||
command! GitPrev call <sid>git_prev() | call s:git_info()
|
|
||||||
command! GitFirst call <sid>git_first() | call s:git_info()
|
|
||||||
command! GitLast call <sid>git_last() | call s:git_info()
|
|
||||||
command! GitInfo call <sid>git_info()
|
|
||||||
command! -nargs=1 GitCheckout call <sid>file_at_revision(<f-args>)
|
|
||||||
command! -nargs=? GitCompare try
|
|
||||||
\| call s:gitroot() | call <sid>git_diff(<f-args>)
|
|
||||||
\| catch | echo 'Not a git repo!'
|
|
||||||
\| endtry
|
|
||||||
command! Uncommited try
|
|
||||||
\| call s:gitroot() | call <sid>git_diff()
|
|
||||||
\| catch | echo 'Not a git repo!'
|
|
||||||
\| endtry
|
|
||||||
command! GitRoot try
|
|
||||||
\| echo <sid>gitroot()
|
|
||||||
\| catch | echo 'Not a git repository'
|
|
||||||
\| endtry
|
|
||||||
|
|
||||||
" === FILE STUFF ===
|
" === FILE STUFF ===
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue