From 9f85b2508209de9df73a223768ee0162fb87c1d0 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 31 Jan 2022 22:02:08 +0900 Subject: neovim: add SmartTabEdit command --- .config/nvim/init.lua | 28 +++++++++++++++++++++++++++- .config/nvim/plugin/leaf.vim | 16 ++++++++-------- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 52b814c..830310f 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -733,7 +733,7 @@ function vimrc.fn.open_scratch() if F.isdirectory(dir) == 0 then F.mkdir(dir, 'p') end - vim.cmd(('edit %s/%s.%s'):format(dir, fname, ext)) + vim.cmd(('SmartTabEdit %s/%s.%s'):format(dir, fname, ext)) if vim.bo.filetype ~= ft then vim.cmd('setlocal filetype=' .. ft) end @@ -856,6 +856,32 @@ command! -bar -range=% +function vimrc.fn.smart_tabedit(mods, args) + local is_empty_buffer = ( + F.bufname() == '' + and not vim.bo.modified + and F.line('$') <= 1 + and F.getline('.') == '' + ) + + if is_empty_buffer then + vim.cmd(mods .. ' edit ' .. args) + else + vim.cmd(mods .. ' tabedit ' .. args) + end +end + + +-- If the current buffer is empty, open a file with the current window; +-- otherwise open a new tab. +vim.cmd([[ +command! -bar -complete=file -nargs=* + \ SmartTabEdit + \ call v:lua.vimrc.fn.smart_tabedit(, ) +]]) + + + -- Appearance {{{1 -- Color scheme {{{2 diff --git a/.config/nvim/plugin/leaf.vim b/.config/nvim/plugin/leaf.vim index e4826b3..5d0d580 100644 --- a/.config/nvim/plugin/leaf.vim +++ b/.config/nvim/plugin/leaf.vim @@ -9,15 +9,15 @@ nmap nmap l (leaf) nnoremap (leaf) -nnoremap (leaf)i tabedit ~/leaves/INBOX.leaf -nnoremap (leaf)t tabedit ~/leaves/TODO.leaf -nnoremap (leaf)c tabedit ~/leaves/CALENDAR.leaf -nnoremap (leaf)p tabedit ~/leaves/PROJECTS.leaf -nnoremap (leaf)s tabedit ~/leaves/SOMEDAY.leaf -nnoremap (leaf)r tabedit ~/leaves/REFS.leaf -nnoremap (leaf)A tabedit ~/leaves/ARCHIVES.leaf +nnoremap (leaf)i SmartTabEdit ~/leaves/INBOX.leaf +nnoremap (leaf)t SmartTabEdit ~/leaves/TODO.leaf +nnoremap (leaf)c SmartTabEdit ~/leaves/CALENDAR.leaf +nnoremap (leaf)p SmartTabEdit ~/leaves/PROJECTS.leaf +nnoremap (leaf)s SmartTabEdit ~/leaves/SOMEDAY.leaf +nnoremap (leaf)r SmartTabEdit ~/leaves/REFS.leaf +nnoremap (leaf)A SmartTabEdit ~/leaves/ARCHIVES.leaf -nnoremap (leaf)l tabedit ~/leaves/INBOX.leaf normal G +nnoremap (leaf)l SmartTabEdit ~/leaves/INBOX.leaf normal G let g:loaded_leaf = 1 -- cgit v1.2.3-70-g09d2