[nvim] Add gitlens, scratchfile lua plugins

Added gitlens to show git blame for cursorline after short time. Added
makescratch plugin to create a new scratch window via simple command.
This commit is contained in:
Marty Oehme 2020-05-09 14:46:49 +02:00
parent e6e384270a
commit 00b15048df
No known key found for this signature in database
GPG key ID: 0CCB0526EFB9611A
4 changed files with 81 additions and 0 deletions

View file

@ -0,0 +1,42 @@
local M = {}
local api = vim.api
function M.blameVirtText()
-- get the current file extension
local ft = vim.fn.expand('%:h:t')
if ft == '' or ft == 'bin' then -- if we are in a scratch buffer, unknown filetype, or nvim's terminal window
return
end
M.clearBlameVirtText()
local currFile = vim.fn.expand('%')
local line = api.nvim_win_get_cursor(0)
local blame = vim.fn.system(string.format('git blame -c -L %d,%d %s', line[1], line[1], currFile))
local hash = vim.split(blame, '%s')[1]
local cmd = string.format("git show %s ", hash).."--format='%an | %ar | %s'"
if hash == '00000000' then
text = 'Not Committed Yet'
else
text = vim.fn.system(cmd)
text = vim.split(text, '\n')[1]
if text:find("fatal") then -- if the call to git show fails
text = 'Not Committed Yet'
end
end
-- set virtual text for namespace 2 with the content from git and assign it to the higlight group 'GitLens'
api.nvim_buf_set_virtual_text(0, 2, line[1] - 1, {{ text,'GitLens' }}, {})
end
-- important for clearing out the text when our cursor moves
function M.clearBlameVirtText()
-- clear out virtual text from namespace 2 (the namespace we will set later)
api.nvim_buf_clear_namespace(0, 2, 0, -1)
end
return M

View file

@ -0,0 +1,11 @@
local api = vim.api
local M= {}
function M.makeScratch()
api.nvim_command('enew')
-- vim.bo[0].bufhidden=hide
vim.bo[0].buftype=nofile
vim.bo[0].swapfile=false
end
return M

View file

@ -0,0 +1,23 @@
function s:setupGitLens()
" -- disable gitlens unconditionally, and remove virtual text
lua require('gitlens').clearBlameVirtText()
augroup GitLens
autocmd!
augroup END
" -- if it is wanted enable gitlens on holding the cursor
if g:gitlens_enable
augroup GitLens
autocmd! CursorHold * lua require('gitlens').blameVirtText()
autocmd! CursorMoved * lua require('gitlens').clearBlameVirtText()
autocmd! CursorMovedI * lua require('gitlens').clearBlameVirtText()
augroup END
endif
endfunction
function s:toggleGitLens()
let g:gitlens_enable = !get(g:, 'gitlens_enable', 1)
call s:setupGitLens()
endfunction
command! GitLensToggle call s:toggleGitLens()

View file

@ -0,0 +1,5 @@
function s:makeScratch()
lua require('scratchpad').makeScratch()
endfunction
command! ScratchPad call s:makeScratch()