[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/alunity/nvim/main/init.lua [Back]  [Original]

-- opts

vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = true
vim.opt.ignorecase = true
vim.opt.smartcase = true
vim.opt.cursorline = true
vim.opt.scrolloff = 8
vim.opt.termguicolors = true
vim.opt.signcolumn = "yes"
vim.opt.updatetime = 250
vim.opt.clipboard = "unnamedplus"
vim.cmd.colorscheme "catppuccin"
vim.opt.directory = vim.fn.stdpath('data') .. '/swap//'
vim.opt.completeopt = { "menuone", "noinsert", "noselect" }
vim.opt.exrc = true
vim.g.direnv_silent_load = 1

vim.keymap.set("n", "b", "silent make | copen", {desc = "Run Build Task"})
vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic float' })
vim.keymap.set('i', '', '', { desc = 'Trigger native autocomplete' })
vim.keymap.set('n', 'x', 'source %', { desc = 'Source current file' })
vim.keymap.set('n', 'pv', 'Oil', { desc = 'file explorer' })

local zen_active = false
vim.keymap.set('n', 'z', function()
    zen_active = not zen_active
    if zen_active then
        prev_status = vim.opt.laststatus:get()
        prev_tab = vim.opt.showtabline:get()
        vim.opt.laststatus = 0
        vim.opt.showtabline = 0
        vim.opt.ruler = false
        vim.opt.number = false
        vim.opt.relativenumber = false
    else
        vim.opt.laststatus = prev_status == 0 and 3 or prev_status
        vim.opt.showtabline = prev_tab == 0 and 2 or prev_tab
        vim.opt.ruler = true
        vim.opt.number = true
        vim.opt.relativenumber = true
    end
end, { desc = 'toggle zen' })

vim.keymap.set('i', '', function()
    if vim.fn.pumvisible() == 1 then
        return ''
    else
        return ''
    end
end, { expr = true, desc = 'Next completion item or Tab' })

vim.keymap.set('i', '', function()
    if vim.fn.pumvisible() == 1 then
        return ''
    else
        return ''
    end
end, { expr = true, desc = 'Previous completion item or Shift-Tab' })

vim.keymap.set('i', '', function()
    if vim.fn.pumvisible() == 1 then
        return ''
    else
        return ''
    end
end, { expr = true, desc = 'Accept completion item or Enter' })

vim.api.nvim_set_hl(0, "Normal", { bg = "none" })
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })

vim.pack.add({
    'https://github.com/nvim-mini/mini.nvim',
    'https://github.com/neovim/nvim-lspconfig',
    'https://github.com/nvim-treesitter/nvim-treesitter',
    'https://github.com/folke/lazydev.nvim',
    'https://github.com/stevearc/oil.nvim',
    'https://github.com/catppuccin/nvim',
    'https://github.com/ibhagwan/fzf-lua',
    'https://github.com/cbochs/grapple.nvim',
    'https://github.com/direnv/direnv.vim'
})

vim.api.nvim_create_autocmd('FileType', {
    pattern = { 'lua', 'python', 'javascript', 'typescript', 'rust', 'go', 'c' }, 
    callback = function()
        -- Enable syntax highlighting
        vim.treesitter.start()

        -- Enable treesitter-based folding
        vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
        vim.wo.foldmethod = 'expr'

        -- Enable treesitter-based indentation (experimental)
        vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
        vim.opt.foldenable = false -- Keep folds open by default
    end,
})

require("oil").setup()

require('grapple').setup({
    scope = "git",
    icons = false,
})

local grapple = require("grapple")
vim.keymap.set("n", "a", grapple.toggle, { desc = "Grapple toggle tag" })
vim.keymap.set("n", "m", grapple.toggle_tags, { desc = "Grapple open tags menu" })
vim.keymap.set("n", "", function() grapple.select({ index = 1 }) end, { desc = "Grapple jump 1" })
vim.keymap.set("n", "", function() grapple.select({ index = 2 }) end, { desc = "Grapple jump 2" })
vim.keymap.set("n", "", function() grapple.select({ index = 3 }) end, { desc = "Grapple jump 3" })
vim.keymap.set("n", "", function() grapple.select({ index = 4 }) end, { desc = "Grapple jump 4" })

-- mini

require('mini.ai').setup()
require('mini.pairs').setup()
require('mini.surround').setup()
require('mini.statusline').setup()
require('mini.starter').setup()
require('mini.basics').setup()
require('mini.comment').setup()
require('mini.cmdline').setup()
require('mini.diff').setup()
require('mini.notify').setup()
require('mini.git').setup()
require('mini.cursorword').setup()
require('mini.hipatterns').setup()
require('mini.indentscope').setup()
require('mini.tabline').setup()
require('mini.trailspace').setup()
require('mini.completion').setup({
    -- Delay in milliseconds before the menu pops up (lower is faster)
    delay = { completion = 50, info = 100, signature = 50 },

    -- Configure what gets scraped
    lsp_completion = {
        -- Use Neovim's native omnifunc for LSP results
        source_func = 'omnifunc',
        -- Automatically fall back to buffer words if LSP has no results
        auto_setup = true,
    },
})


vim.diagnostic.config({
    -- Show the error message at the end of the line (Virtual Text)
    virtual_text = true,
    signs = true,
    underline = true,
    update_in_insert = false,
    -- Make the floating window look a bit nicer
    float = {
        border = 'rounded',
        source = true, -- Shows which LSP sent the error
    },
})

-- fzf

local fzf = require('fzf-lua')
vim.keymap.set('n', 'pf', fzf.files, { desc = 'Fuzzy find files' })
vim.keymap.set('n', '', fzf.git_files, { desc = 'Fuzzy find git files' })
vim.keymap.set('n', 'ps', fzf.live_grep, { desc = 'Grep text in project' })
vim.keymap.set('n', 'pb', fzf.buffers, { desc = 'Search active buffers' })

-- lsp

vim.api.nvim_create_autocmd('LspAttach', {
    group = vim.api.nvim_create_augroup('UserLspConfig', {}),
    callback = function(args)
        local _ = vim.lsp.get_client_by_id(args.data.client_id)
        local bufnr = args.buf

        -- Buffer-local LSP keymaps
        local opts = { buffer = bufnr }
        vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
        vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
        vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
        vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts)
        vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, opts)

        vim.keymap.set('n', 'so', 'FzfLua lsp_document_symbols',
            { desc = 'Fuzzy find document symbols' })
        vim.keymap.set('n', 'sO', 'FzfLua lsp_live_workspace_symbols',
            { desc = 'Fuzzy find workspace symbols' })

        vim.keymap.set('n', 'f', function()
            vim.lsp.buf.format({ async = true })
        end, opts)
    end,
})

require('lazydev').setup({
    library = {
        -- This explicitly adds Neovim's built-in vim.uv (libuv) types
        { path = "luvit-meta/library", words = { "vim%.uv" } },
    },
})

vim.lsp.config('lua_ls', {
    settings = {
        Lua = {
            diagnostics = {
                globals = { 'vim' },
            },
            workspace = {
                library = vim.api.nvim_get_runtime_file("", true),
                checkThirdParty = false,
            },
            telemetry = {
                enable = false,
            },
        }
    }
})

vim.lsp.enable('lua_ls')
vim.lsp.enable('clangd')
vim.lsp.enable('basedpyright')

Web Proxy Viewer  |  New URL  |  Original Page