init
This commit is contained in:
3
plugin/abbrev.vim
Normal file
3
plugin/abbrev.vim
Normal file
@@ -0,0 +1,3 @@
|
||||
iabbrev reqire require
|
||||
iabbrev serveral several
|
||||
iabbrev ture true
|
||||
50
plugin/command.lua
Normal file
50
plugin/command.lua
Normal file
@@ -0,0 +1,50 @@
|
||||
vim.api.nvim_create_user_command("CopyPath", function(context)
|
||||
local full_path = vim.fn.glob("%:p")
|
||||
local file_path = nil
|
||||
if context["args"] == "nameonly" then
|
||||
file_path = vim.fn.fnamemodify(full_path, ":t")
|
||||
end
|
||||
|
||||
if context["args"] == "relative" then
|
||||
local project_marker = { ".git", "pyproject.toml" }
|
||||
local project_root = vim.fs.root(0, project_marker)
|
||||
if project_root == nil then
|
||||
vim.print("can't find project root")
|
||||
return
|
||||
end
|
||||
|
||||
file_path = vim.fn.substitute(full_path, project_root, "<project-root>", "g")
|
||||
end
|
||||
|
||||
if context["args"] == "absolute" then
|
||||
file_path = full_path
|
||||
end
|
||||
|
||||
vim.fn.setreg("+", file_path)
|
||||
vim.print("Filepath copied to clipboard!")
|
||||
end, {
|
||||
bang = false,
|
||||
nargs = 1,
|
||||
force = true,
|
||||
desc = "Copy current file path to clipboard",
|
||||
complete = function()
|
||||
return { "nameonly", "relative", "absolute" }
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_user_command("JSONFormat", function(context)
|
||||
local range = context["range"]
|
||||
local line1 = context["line1"]
|
||||
local line2 = context["line2"]
|
||||
|
||||
if range == 0 or range == 2 then
|
||||
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
|
||||
vim.fn.execute(cmd_str)
|
||||
else
|
||||
local msg = string.format("unsupported range: %s", range)
|
||||
vim.api.nvim_echo({ { msg } }, true, { err = true })
|
||||
end
|
||||
end, {
|
||||
desc = "Format JSON",
|
||||
range = "%",
|
||||
})
|
||||
46
plugin/command.vim
Normal file
46
plugin/command.vim
Normal file
@@ -0,0 +1,46 @@
|
||||
" Capture output from a command to register @m
|
||||
" To paste, press "mp
|
||||
command! -nargs=1 -complete=command Redir call utils#CaptureCommandOutput(<q-args>)
|
||||
|
||||
command! -bar -bang -nargs=+ -complete=file Edit call utils#MultiEdit([<f-args>])
|
||||
call utils#Cabbrev('edit', 'Edit')
|
||||
|
||||
call utils#Cabbrev('man', 'Man')
|
||||
|
||||
" show current date and time in human-readable format
|
||||
command! -nargs=? Datetime echo utils#iso_time(<q-args>)
|
||||
|
||||
" Convert Markdown file to PDF
|
||||
command! ToPDF call s:md_to_pdf()
|
||||
|
||||
function! s:md_to_pdf() abort
|
||||
" check if pandoc is installed
|
||||
if executable('pandoc') != 1
|
||||
echoerr 'pandoc not found'
|
||||
return
|
||||
endif
|
||||
|
||||
let l:md_path = expand('%:p')
|
||||
let l:pdf_path = fnamemodify(l:md_path, ':r') .. '.pdf'
|
||||
|
||||
let l:header_path = stdpath('config') . '/resources/head.tex'
|
||||
|
||||
let l:cmd = 'pandoc --pdf-engine=xelatex --highlight-style=zenburn --table-of-content ' .
|
||||
\ '--include-in-header=' . l:header_path . ' -V fontsize=10pt -V colorlinks -V toccolor=NavyBlue ' .
|
||||
\ '-V linkcolor=red -V urlcolor=teal -V filecolor=magenta -s ' .
|
||||
\ l:md_path . ' -o ' . l:pdf_path
|
||||
|
||||
if g:is_mac
|
||||
let l:cmd = l:cmd . '&& open ' . l:pdf_path
|
||||
endif
|
||||
|
||||
if g:is_win
|
||||
let l:cmd = l:cmd . '&& start ' . l:pdf_path
|
||||
endif
|
||||
|
||||
let l:id = jobstart(l:cmd)
|
||||
|
||||
if l:id == 0 || l:id == -1
|
||||
echoerr "Error running command"
|
||||
endif
|
||||
endfunction
|
||||
118
plugin/log-autocmds.vim
Normal file
118
plugin/log-autocmds.vim
Normal file
@@ -0,0 +1,118 @@
|
||||
command! LogAutocmds call s:log_autocmds_toggle()
|
||||
|
||||
function! s:log_auto_cmds_toggle()
|
||||
augroup LogAutocmd
|
||||
autocmd!
|
||||
augroup END
|
||||
|
||||
let l:date = strftime('%F', localtime())
|
||||
let s:activate = get(s:, 'activate', 0) ? 0 : 1
|
||||
if !s:activate
|
||||
call s:log('Stopped autocmd log (' . l:date . ')')
|
||||
return
|
||||
endif
|
||||
|
||||
call s:log('Started autocmd log (' . l:date . ')')
|
||||
augroup LogAutocmd
|
||||
for l:au in s:aulist
|
||||
silent execute 'autocmd' l:au '* call s:log(''' . l:au . ''')'
|
||||
endfor
|
||||
augroup END
|
||||
endfunction
|
||||
|
||||
function! s:log(message)
|
||||
silent execute '!echo "'
|
||||
\ . strftime('%T', localtime()) . ' - ' . a:message . '"'
|
||||
\ '>> /tmp/vim_log_autocommands'
|
||||
endfunction
|
||||
|
||||
" Deliberately left out due to side effects
|
||||
" - SourceCmd
|
||||
" - FileAppendCmd
|
||||
" - FileWriteCmd
|
||||
" - BufWriteCmd
|
||||
" - FileReadCmd
|
||||
" - BufReadCmd
|
||||
" - FuncUndefined
|
||||
|
||||
let s:aulist = [
|
||||
\ 'BufNewFile',
|
||||
\ 'BufReadPre',
|
||||
\ 'BufRead',
|
||||
\ 'BufReadPost',
|
||||
\ 'FileReadPre',
|
||||
\ 'FileReadPost',
|
||||
\ 'FilterReadPre',
|
||||
\ 'FilterReadPost',
|
||||
\ 'StdinReadPre',
|
||||
\ 'StdinReadPost',
|
||||
\ 'BufWrite',
|
||||
\ 'BufWritePre',
|
||||
\ 'BufWritePost',
|
||||
\ 'FileWritePre',
|
||||
\ 'FileWritePost',
|
||||
\ 'FileAppendPre',
|
||||
\ 'FileAppendPost',
|
||||
\ 'FilterWritePre',
|
||||
\ 'FilterWritePost',
|
||||
\ 'BufAdd',
|
||||
\ 'BufCreate',
|
||||
\ 'BufDelete',
|
||||
\ 'BufWipeout',
|
||||
\ 'BufFilePre',
|
||||
\ 'BufFilePost',
|
||||
\ 'BufEnter',
|
||||
\ 'BufLeave',
|
||||
\ 'BufWinEnter',
|
||||
\ 'BufWinLeave',
|
||||
\ 'BufUnload',
|
||||
\ 'BufHidden',
|
||||
\ 'BufNew',
|
||||
\ 'SwapExists',
|
||||
\ 'FileType',
|
||||
\ 'Syntax',
|
||||
\ 'EncodingChanged',
|
||||
\ 'TermChanged',
|
||||
\ 'VimEnter',
|
||||
\ 'GUIEnter',
|
||||
\ 'GUIFailed',
|
||||
\ 'TermResponse',
|
||||
\ 'QuitPre',
|
||||
\ 'VimLeavePre',
|
||||
\ 'VimLeave',
|
||||
\ 'FileChangedShell',
|
||||
\ 'FileChangedShellPost',
|
||||
\ 'FileChangedRO',
|
||||
\ 'ShellCmdPost',
|
||||
\ 'ShellFilterPost',
|
||||
\ 'CmdUndefined',
|
||||
\ 'SpellFileMissing',
|
||||
\ 'SourcePre',
|
||||
\ 'VimResized',
|
||||
\ 'FocusGained',
|
||||
\ 'FocusLost',
|
||||
\ 'CursorHold',
|
||||
\ 'CursorHoldI',
|
||||
\ 'CursorMoved',
|
||||
\ 'CursorMovedI',
|
||||
\ 'WinEnter',
|
||||
\ 'WinLeave',
|
||||
\ 'TabEnter',
|
||||
\ 'TabLeave',
|
||||
\ 'CmdwinEnter',
|
||||
\ 'CmdwinLeave',
|
||||
\ 'InsertEnter',
|
||||
\ 'InsertChange',
|
||||
\ 'InsertLeave',
|
||||
\ 'InsertCharPre',
|
||||
\ 'TextChanged',
|
||||
\ 'TextChangedI',
|
||||
\ 'ColorScheme',
|
||||
\ 'RemoteReply',
|
||||
\ 'QuickFixCmdPre',
|
||||
\ 'QuickFixCmdPost',
|
||||
\ 'SessionLoadPost',
|
||||
\ 'MenuPopup',
|
||||
\ 'CompleteDone',
|
||||
\ 'User',
|
||||
\ ]
|
||||
Reference in New Issue
Block a user