add custom config for net-tree
This commit is contained in:
		
							parent
							
								
									95653c6526
								
							
						
					
					
						commit
						c516919105
					
				| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
return {
 | 
			
		||||
  ActiveLSP = '',
 | 
			
		||||
  ActiveTS = '',
 | 
			
		||||
  ArrowLeft = '',
 | 
			
		||||
  ArrowRight = '',
 | 
			
		||||
  Bookmarks = '',
 | 
			
		||||
  BufferClose = '',
 | 
			
		||||
  DapBreakpoint = '',
 | 
			
		||||
  DapBreakpointCondition = '',
 | 
			
		||||
  DapBreakpointRejected = '',
 | 
			
		||||
  DapLogPoint = '.>',
 | 
			
		||||
  DapStopped = '',
 | 
			
		||||
  Debugger = '',
 | 
			
		||||
  DefaultFile = '',
 | 
			
		||||
  Diagnostic = '',
 | 
			
		||||
  DiagnosticError = '',
 | 
			
		||||
  DiagnosticHint = '',
 | 
			
		||||
  DiagnosticInfo = '',
 | 
			
		||||
  DiagnosticWarn = '',
 | 
			
		||||
  Ellipsis = '…',
 | 
			
		||||
  FileNew = '',
 | 
			
		||||
  FileModified = '',
 | 
			
		||||
  FileReadOnly = '',
 | 
			
		||||
  FoldClosed = '',
 | 
			
		||||
  FoldOpened = '',
 | 
			
		||||
  FoldSeparator = ' ',
 | 
			
		||||
  FolderClosed = '',
 | 
			
		||||
  FolderEmpty = '',
 | 
			
		||||
  FolderOpen = '',
 | 
			
		||||
  Git = '',
 | 
			
		||||
  GitAdd = '',
 | 
			
		||||
  GitBranch = '',
 | 
			
		||||
  GitChange = '',
 | 
			
		||||
  GitConflict = '',
 | 
			
		||||
  GitDelete = '',
 | 
			
		||||
  GitIgnored = '◌',
 | 
			
		||||
  GitRenamed = '➜',
 | 
			
		||||
  GitSign = '▎',
 | 
			
		||||
  GitStaged = '✓',
 | 
			
		||||
  GitUnstaged = '✗',
 | 
			
		||||
  GitUntracked = '★',
 | 
			
		||||
  LSPLoaded = '', -- TODO: Remove unused icon in AstroNvim v4
 | 
			
		||||
  LSPLoading1 = '',
 | 
			
		||||
  LSPLoading2 = '',
 | 
			
		||||
  LSPLoading3 = '',
 | 
			
		||||
  MacroRecording = '',
 | 
			
		||||
  Package = '',
 | 
			
		||||
  Paste = '',
 | 
			
		||||
  Refresh = '',
 | 
			
		||||
  Search = '',
 | 
			
		||||
  Selected = '❯',
 | 
			
		||||
  Session = '',
 | 
			
		||||
  Sort = '',
 | 
			
		||||
  Spellcheck = '',
 | 
			
		||||
  Tab = '',
 | 
			
		||||
  TabClose = '',
 | 
			
		||||
  Terminal = '',
 | 
			
		||||
  Window = '',
 | 
			
		||||
  WordFile = '',
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,41 @@
 | 
			
		|||
return {
 | 
			
		||||
  ActiveLSP = 'LSP:',
 | 
			
		||||
  ArrowLeft = '<',
 | 
			
		||||
  ArrowRight = '>',
 | 
			
		||||
  BufferClose = 'x',
 | 
			
		||||
  DapBreakpoint = 'B',
 | 
			
		||||
  DapBreakpointCondition = 'C',
 | 
			
		||||
  DapBreakpointRejected = 'R',
 | 
			
		||||
  DapLogPoint = 'L',
 | 
			
		||||
  DapStopped = '>',
 | 
			
		||||
  DefaultFile = '[F]',
 | 
			
		||||
  DiagnosticError = 'X',
 | 
			
		||||
  DiagnosticHint = '?',
 | 
			
		||||
  DiagnosticInfo = 'i',
 | 
			
		||||
  DiagnosticWarn = '!',
 | 
			
		||||
  Ellipsis = '...',
 | 
			
		||||
  FileModified = '*',
 | 
			
		||||
  FileReadOnly = '[lock]',
 | 
			
		||||
  FoldClosed = '+',
 | 
			
		||||
  FoldOpened = '-',
 | 
			
		||||
  FoldSeparator = ' ',
 | 
			
		||||
  FolderClosed = '[D]',
 | 
			
		||||
  FolderEmpty = '[E]',
 | 
			
		||||
  FolderOpen = '[O]',
 | 
			
		||||
  GitAdd = '[+]',
 | 
			
		||||
  GitChange = '[/]',
 | 
			
		||||
  GitConflict = '[!]',
 | 
			
		||||
  GitDelete = '[-]',
 | 
			
		||||
  GitIgnored = '[I]',
 | 
			
		||||
  GitRenamed = '[R]',
 | 
			
		||||
  GitSign = '|',
 | 
			
		||||
  GitStaged = '[S]',
 | 
			
		||||
  GitUnstaged = '[U]',
 | 
			
		||||
  GitUntracked = '[?]',
 | 
			
		||||
  MacroRecording = 'Recording:',
 | 
			
		||||
  Paste = '[PASTE]',
 | 
			
		||||
  Search = '?',
 | 
			
		||||
  Selected = '*',
 | 
			
		||||
  Spellcheck = '[SPELL]',
 | 
			
		||||
  TabClose = 'X',
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -3,13 +3,12 @@
 | 
			
		|||
--
 | 
			
		||||
-- See the kickstart.nvim README for more information
 | 
			
		||||
vim.opt.relativenumber = true
 | 
			
		||||
vim.g.have_nerd_font = false
 | 
			
		||||
vim.g.have_nerd_font = true
 | 
			
		||||
 | 
			
		||||
return {
 | 
			
		||||
  -- require 'kickstart.plugins.debug',
 | 
			
		||||
require('lazy').setup {
 | 
			
		||||
  require 'kickstart.plugins.indent_line',
 | 
			
		||||
  -- require 'kickstart.plugins.lint',
 | 
			
		||||
  require 'kickstart.plugins.autopairs',
 | 
			
		||||
  require 'kickstart.plugins.neo-tree',
 | 
			
		||||
  require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return {}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,130 @@
 | 
			
		|||
-- Neo-tree is a Neovim plugin to browse the file system
 | 
			
		||||
-- https://github.com/nvim-neo-tree/neo-tree.nvim
 | 
			
		||||
 | 
			
		||||
local utils = require 'custom.utils'
 | 
			
		||||
local get_icon = utils.get_icon
 | 
			
		||||
 | 
			
		||||
return {
 | 
			
		||||
  'nvim-neo-tree/neo-tree.nvim',
 | 
			
		||||
  version = '*',
 | 
			
		||||
  dependencies = {
 | 
			
		||||
    'nvim-lua/plenary.nvim',
 | 
			
		||||
    'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
 | 
			
		||||
    'MunifTanjim/nui.nvim',
 | 
			
		||||
  },
 | 
			
		||||
  cmd = 'Neotree',
 | 
			
		||||
  keys = {
 | 
			
		||||
    { '\\', ':Neotree reveal<CR>', { desc = 'NeoTree reveal' } },
 | 
			
		||||
  },
 | 
			
		||||
  opts = {
 | 
			
		||||
    close_if_last_window = true,
 | 
			
		||||
    sources = { 'filesystem', 'git_status' },
 | 
			
		||||
    source_selector = {
 | 
			
		||||
      winbar = true,
 | 
			
		||||
      content_layout = 'center',
 | 
			
		||||
      sources = {
 | 
			
		||||
        { source = 'filesystem', display_name = get_icon('FolderClosed', 1, true) .. 'File' },
 | 
			
		||||
        { source = 'git_status', display_name = get_icon('Git', 1, true) .. 'Git' },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    default_component_configs = {
 | 
			
		||||
      indent = { padding = 0 },
 | 
			
		||||
      icon = {
 | 
			
		||||
        folder_closed = get_icon 'FolderClosed',
 | 
			
		||||
        folder_open = get_icon 'FolderOpen',
 | 
			
		||||
        folder_empty = get_icon 'FolderEmpty',
 | 
			
		||||
        folder_empty_open = get_icon 'FolderEmpty',
 | 
			
		||||
        default = get_icon 'DefaultFile',
 | 
			
		||||
      },
 | 
			
		||||
      modified = { symbol = get_icon 'FileModified' },
 | 
			
		||||
      git_status = {
 | 
			
		||||
        symbols = {
 | 
			
		||||
          added = get_icon 'GitAdd',
 | 
			
		||||
          deleted = get_icon 'GitDelete',
 | 
			
		||||
          modified = get_icon 'GitChange',
 | 
			
		||||
          renamed = get_icon 'GitRenamed',
 | 
			
		||||
          untracked = get_icon 'GitUntracked',
 | 
			
		||||
          ignored = get_icon 'GitIgnored',
 | 
			
		||||
          unstaged = get_icon 'GitUnstaged',
 | 
			
		||||
          staged = get_icon 'GitStaged',
 | 
			
		||||
          conflict = get_icon 'GitConflict',
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    commands = {
 | 
			
		||||
      parent_or_close = function(state)
 | 
			
		||||
        local node = state.tree:get_node()
 | 
			
		||||
        if (node.type == 'directory' or node:has_children()) and node:is_expanded() then
 | 
			
		||||
          state.commands.toggle_node(state)
 | 
			
		||||
        else
 | 
			
		||||
          require('neo-tree.ui.renderer').focus_node(state, node:get_parent_id())
 | 
			
		||||
        end
 | 
			
		||||
      end,
 | 
			
		||||
      child_or_open = function(state)
 | 
			
		||||
        local node = state.tree:get_node()
 | 
			
		||||
        if node.type == 'directory' or node:has_children() then
 | 
			
		||||
          if not node:is_expanded() then -- if unexpanded, expand
 | 
			
		||||
            state.commands.toggle_node(state)
 | 
			
		||||
          else -- if expanded and has children, seleect the next child
 | 
			
		||||
            require('neo-tree.ui.renderer').focus_node(state, node:get_child_ids()[1])
 | 
			
		||||
          end
 | 
			
		||||
        else -- if not a directory just open it
 | 
			
		||||
          state.commands.open(state)
 | 
			
		||||
        end
 | 
			
		||||
      end,
 | 
			
		||||
      copy_selector = function(state)
 | 
			
		||||
        local node = state.tree:get_node()
 | 
			
		||||
        local filepath = node:get_id()
 | 
			
		||||
        local filename = node.name
 | 
			
		||||
        local modify = vim.fn.fnamemodify
 | 
			
		||||
 | 
			
		||||
        local vals = {
 | 
			
		||||
          ['BASENAME'] = modify(filename, ':r'),
 | 
			
		||||
          ['EXTENSION'] = modify(filename, ':e'),
 | 
			
		||||
          ['FILENAME'] = filename,
 | 
			
		||||
          ['PATH (CWD)'] = modify(filepath, ':.'),
 | 
			
		||||
          ['PATH (HOME)'] = modify(filepath, ':~'),
 | 
			
		||||
          ['PATH'] = filepath,
 | 
			
		||||
          ['URI'] = vim.uri_from_fname(filepath),
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        local options = vim.tbl_filter(function(val)
 | 
			
		||||
          return vals[val] ~= ''
 | 
			
		||||
        end, vim.tbl_keys(vals))
 | 
			
		||||
        if vim.tbl_isempty(options) then
 | 
			
		||||
          utils.notify('No values to copy', vim.log.levels.WARN)
 | 
			
		||||
          return
 | 
			
		||||
        end
 | 
			
		||||
        table.sort(options)
 | 
			
		||||
        vim.ui.select(options, {
 | 
			
		||||
          prompt = 'Choose to copy to clipboard:',
 | 
			
		||||
          format_item = function(item)
 | 
			
		||||
            return ('%s: %s'):format(item, vals[item])
 | 
			
		||||
          end,
 | 
			
		||||
        }, function(choice)
 | 
			
		||||
          local result = vals[choice]
 | 
			
		||||
          if result then
 | 
			
		||||
            utils.notify(('Copied: `%s`'):format(result))
 | 
			
		||||
            vim.fn.setreg('+', result)
 | 
			
		||||
          end
 | 
			
		||||
        end)
 | 
			
		||||
      end,
 | 
			
		||||
    },
 | 
			
		||||
    window = {
 | 
			
		||||
      mappings = {
 | 
			
		||||
        ['[b'] = 'prev_source',
 | 
			
		||||
        [']b'] = 'next_source',
 | 
			
		||||
        Y = 'copy_selector',
 | 
			
		||||
        h = 'parent_or_close',
 | 
			
		||||
        l = 'child_or_open',
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
    filesystem = {
 | 
			
		||||
      window = {
 | 
			
		||||
        mappings = {
 | 
			
		||||
          ['\\'] = 'close_window',
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
local M = {}
 | 
			
		||||
 | 
			
		||||
function M.notify(msg, type, opts)
 | 
			
		||||
  vim.schedule(function()
 | 
			
		||||
    vim.notify(msg, type, opts)
 | 
			
		||||
  end)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function M.get_icon(kind, padding, no_fallback)
 | 
			
		||||
  if not vim.g.have_nerd_font and no_fallback then
 | 
			
		||||
    return ''
 | 
			
		||||
  end
 | 
			
		||||
  local icon_pack = vim.g.have_nerd_font and 'icons' or 'text_icons'
 | 
			
		||||
  if not M[icon_pack] then
 | 
			
		||||
    M.icons = require 'custom.icons.nerd_font'
 | 
			
		||||
    M.text_icons = require 'custom.icons.text'
 | 
			
		||||
  end
 | 
			
		||||
  local icon = M[icon_pack] and M[icon_pack][kind]
 | 
			
		||||
  return icon and icon .. string.rep(' ', padding or 0) or ''
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
return M
 | 
			
		||||
		Loading…
	
		Reference in New Issue