From 15eb3aadabd680cfc660f08f7091070e3197a228 Mon Sep 17 00:00:00 2001 From: PlexSheep Date: Thu, 29 Jun 2023 10:25:44 +0200 Subject: [PATCH] better nvim tree --- home/.config/nvim/main.vim | 13 +++---- home/.config/nvim/nvim-tree.vim | 65 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 home/.config/nvim/nvim-tree.vim diff --git a/home/.config/nvim/main.vim b/home/.config/nvim/main.vim index 503dc9e..c16a279 100644 --- a/home/.config/nvim/main.vim +++ b/home/.config/nvim/main.vim @@ -18,13 +18,16 @@ set completeopt=menuone,noinsert,noselect " Set completeopt to have a better completion experience" set completeopt=menuone,noinsert,noselect + +" load nvim-tree stuff +runtime nvim-tree.vim + call plug#begin() Plug 'glacambre/firenvim', { 'do': { _ -> firenvim#install(0) } } Plug 'jiangmiao/auto-pairs' Plug 'mhinz/vim-startify' Plug 'neoclide/coc.nvim', {'branch': 'release'} -Plug 'nvim-tree/nvim-tree.lua' Plug 'psliwka/vim-smoothie' " scorll with STRG + d or STRG + u Plug 'romgrk/barbar.nvim' " tabs for buffers Plug 'EdenEast/nightfox.nvim' " Vim-Plug @@ -32,7 +35,6 @@ Plug 'numToStr/FTerm.nvim' " floating terminal, toggle with Plug 'kdheepak/lazygit.nvim' Plug 'nvim-lualine/lualine.nvim' " nicer status line Plug 'goolord/alpha-nvim' -Plug 'nvim-tree/nvim-web-devicons' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && yarn install' } @@ -43,6 +45,7 @@ runtime markdownpreview.vim call plug#end() + " no default mappings for vim smoothie (fancy scrolling) let g:smoothie_no_default_mappings = 1 @@ -59,10 +62,6 @@ inoremap pumvisible() ? "\" : "\" " Set completeopt to have a better completion experience" set completeopt=menuone,noinsert,noselect - -" Open NvimTree with f5" -nnoremap :NvimTreeToggle - " Move to previous/next" nnoremap BufferPrevious nnoremap BufferNext @@ -145,8 +144,6 @@ vim.g.loaded_netrwPlugin = 1 -- set termguicolors to enable highlight groups vim.opt.termguicolors = true --- empty setup using defaults -require("nvim-tree").setup() require('lualine').setup { options = { diff --git a/home/.config/nvim/nvim-tree.vim b/home/.config/nvim/nvim-tree.vim new file mode 100644 index 0000000..26e3fcb --- /dev/null +++ b/home/.config/nvim/nvim-tree.vim @@ -0,0 +1,65 @@ +call plug#begin() +Plug 'nvim-tree/nvim-tree.lua' +Plug 'nvim-tree/nvim-web-devicons' +call plug#end() + + +" Open NvimTree with f5" +nnoremap :NvimTreeToggle + + +lua << EOF + +local HEIGHT_RATIO = 0.8 -- You can change this +local WIDTH_RATIO = 0.8 -- You can change this too + +local function my_on_attach(bufnr) + local api = require "nvim-tree.api" + + local function opts(desc) + return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true } + end + + -- default mappings + --api.config.mappings.default_on_attach(bufnr) + + -- custom mappings + -- cd + vim.keymap.set('n', '', api.tree.change_root_to_node, opts('Up')) + vim.keymap.set('n', '?', api.tree.toggle_help, opts('Help')) +end + +-- empty setup using defaults +require("nvim-tree").setup() +require('nvim-tree').setup({ + view = { + float = { + enable = true, + open_win_config = function() + local screen_w = vim.opt.columns:get() + local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get() + local window_w = screen_w * WIDTH_RATIO + local window_h = screen_h * HEIGHT_RATIO + local window_w_int = math.floor(window_w) + local window_h_int = math.floor(window_h) + local center_x = (screen_w - window_w) / 2 + local center_y = ((vim.opt.lines:get() - window_h) / 2) + - vim.opt.cmdheight:get() + return { + border = 'rounded', + relative = 'editor', + row = center_y, + col = center_x, + width = window_w_int, + height = window_h_int, + } + end, + }, + width = function() + return math.floor(vim.opt.columns:get() * WIDTH_RATIO) + end, + }, + on_attach = my_on_attach, +}) + +EOF