*gnvim* GUI for Neovim.

                      ____ _   _       _             ~
                     / ___| \ | |_   _(_)_ __ ___    ~
                    | |  _|  \| \ \ / / | '_ ` _ \   ~
                    | |_| | |\  |\ V /| | | | | | |  ~
                     \____|_| \_| \_/ |_|_| |_| |_|  ~



================================================================================
Setup                                                             *gnvim-setup*

You can optionally change some of gnvim's settings through a setup call.

Example:
>lua
    local api = vim.api

    -- Only setup gnvim when it attaches.
    api.nvim_create_autocmd({'UIEnter'}, {
      callback = function(event)
        local chanid = vim.v.event['chan']
        local chan = vim.api.nvim_get_chan_info(chanid)
        if chan.client and chan.client.name ~= 'gnvim' then
          return
        end

        -- Gnvim brings its own runtime files.
        --
        -- If you're using lazy.nvim, you can use g:gnvim_rtp_path to get the
        -- path to gnvim's runtime files and use it with lazy's
        -- performance.rtp.paths to include gnvim's runtime files without any
        -- external plug.
        local gnvim = require('gnvim')

        -- Set the font
        vim.opt.guifont = 'FiraCode Nerd Font 13'

        -- Increase/decrease font.
        vim.keymap.set('n', '<c-+>', function() gnvim.font_size(1) end)
        vim.keymap.set('n', '<c-->', function() gnvim.font_size(-1) end)

        gnvim.setup({
            cursor = {
                blink_transition = 300
            }
        })
      end
    })
<

The available settings for setup (excluding the gnvim-setup prefix):

                                                           *gnvim-setup.cursor*
*gnvim-setup.cursor.blink_transition*
Transition time between `guicursor` states, in milliseconds.

*gnvim-setup.cursor.position_transition*
Transition time between cursor positions, in milliseconds

*gnvim-setup.scroll_transition*
Transition time for the grid scroll animation.

                                                        *gnvim-setup.popupmenu*
*gnvim-setup.popupmenu.kinds*
Map popupmenu item kinds to different labels and colors.

Each key is a kind value (e.g. LSP completion item kind) and the value contains
a label, hl (normal highlight) and sel_hl (selected higlight).

The hl values can have the following fields:
  - fg (number, defaults to Pmenu/PmenuSel)
  - bg (number, defaults to Pmenu/PmenuSel)
  - bold (boolean, defaults to false)
  - italic (boolean, defaults to false)

Example:
>lua
    popupmenu = {
        kinds = {
            Variable = {
                label = "  Module",
                hl = { fg = tonumber('FF00AA', 16) }
                sel_hl = { fg = tonumber('FF00AA', 16) }
            }
        }
    }
<

You can use `gnvim.popupmenu.kind` as a helper to define the kind items.
>lua
    kinds = {
        Text = gnvim.popupmenu.kind(" Text", "@lsp.type.text"),
    }
>


================================================================================
Variables                                                     *gnvim-variables*

*g:gnvim_rtp_path*
Path to gnvim's runtime files.

================================================================================
Cursor                                                           *gnvim-cursor*

Gnvim's cursors respects neovim's blink options through 'guicursor'. In
addition to blink wait, on and off, gnvim has cursor transition for:

  - position change
  - state change (i.e. blinking)

These can be adjusted through `gnvim-setup.cursor`

================================================================================
Scrolling                                                        *gnvim-scroll*

Gnvim animates the grid scrolling. The scroll speed can be adjusted through
`gnvim-setup.scroll_transition`.

================================================================================
Popupmenu                                                     *gnvim-popupmenu*

Gnvim's popupmenu has some support for customization, see |gnvim-setup.popupmenu|.

The customization brings a limitation however: some of the popupmenu's colors
are not automatically updated when the colorscheme changes. If this happens,
you might call `gnvim-setup` again.

================================================================================
Font                                                               *gnvim-font*

Set the font using 'guifont'.

                                                              *gnvim.font_size*
Gnvim can change the font size through `gnvim.font_size`:
>lua
    local gnvim = require('gnvim')
    local increment = 1

    -- Increase
    gnvim.font_size(increment)
    -- Decrease
    gnvim.font_size(-increment)
>
