ray-x/guihua.lua

github github
neovim-lua-development
stars 154
issues 1
subscribers 5
forks 12
CREATED

2021-04-16

UPDATED

3 days ago


guihua Guihua: A Lua Gui and util library for nvim plugins

  • Provide floating windows
  • A modified wrapper for fzy
  • TextView, ListView, Preview etc
  • Listview listview

  • Listview with fzy finder listview

  • Neovim multigrid external buffer/terminal

multigrid

  • Neovim vim.ui.input and vim.ui.select patch

This cool screen shows an external terminal running lazygit and an external floating window running guihua listview

More screen shot please refer to Navigator.lua

Please refer to test file of how to use it

Lua OOP is powered by middleclass fzy is powered by romgrk fzy-lua-native with modified version of sorter/quicksort to sort list of tables

Install

Plugin has implementation of fzy with both ffi and native lua. If you like to try ffi please run make

Packer

 use {'ray-x/guihua.lua', run = 'cd lua/fzy && make'}

Setup

  -- default mapping
  maps = {
    close_view = '<C-e>',
    send_qf = '<C-q>',
    save = '<C-s>',
    jump_to_list = '<C-w>k',
    jump_to_preview = '<C-w>j',
    prev = '<C-p>',
    next = '<C-n>',
    pageup = '<C-b>',
    pagedown = '<C-f>',
    confirm = '<C-o>',
    split = '<C-s>',
    vsplit = '<C-v>',
    tabnew = '<C-t>',
  }

  -- default icons for panel
  -- will be tbl_deep_extend() if you override any of those
  local icons = {
    panel_icons = {
      section_separator = '─', --'',
      line_num_left = ':', --'',
      line_num_right = '', --',

      range_left = '', --'',
      range_right = '',
      inner_node = '', --├○',
      folded = '◉',
      unfolded = '○',

      outer_node = '', -- '╰○',
      bracket_left = '', -- ⟪',
      bracket_right = '', -- '⟫',
    },
    syntax_icons = {
      var = ' ', -- "👹", -- Vampaire
        method = 'ƒ ', --  "🍔", -- mac
        ['function'] = ' ', -- "🤣", -- Fun
        ['arrow_function'] = ' ', -- "🤣", -- Fun
          parameter = '', -- Pi
            associated = '🤝',
      namespace = '🚀',
      type = ' ',
      field = '🏈',
      interface = '',
      module = '📦',
      flag = '🎏',
    }
  }

  --
  require('guihua.maps').setup({
  maps = {
    close_view = '<C-x>',
  }
  })

Plug

Plug 'ray-x/guihua.lua', {'do': 'cd lua/fzy && make' }

Usage: check the test files on how the api is used.