LunarVim / LunarVimCommunity

Share your lv-config.lua here
34 stars 3 forks source link

My lvim config #2

Open ghost opened 3 years ago

ghost commented 3 years ago
-- *
-- Settings
-- *
local init_custom_options = function()
    local custom_options = {
        relativenumber = true, -- Set relative numbered lines
        colorcolumn = "120", -- Indent line at what column? Set something like '99999' to not display it
        scrolloff = 5, -- Determines the number of context lines you would like to see above and below the cursor
        ignorecase = true, -- Ignore case in search
        smartcase = true, -- Case-sensitive search when search term contains uppercase characters. Otherwise, case-sensitive search.  timeoutlen = 200, -- Time to wait for a mapped sequence to complete (in milliseconds)
    }

    for k, v in pairs(custom_options) do
        vim.opt[k] = v
    end
end
init_custom_options()

-- *
-- Key mappings
-- *
lvim.leader = "space"

lvim.keys.insert_mode = {
    -- Disable arrow keys
    { "<Up>", "<NOP>" },
    { "<Down>", "<NOP>" },
    { "<Left>", "<NOP>" },
    { "<Right>", "<NOP>" },
}

lvim.keys.normal_mode = {
    -- Disable Ex mode, beause what the fuck is that...
    { "Q", "<NOP>" },

    -- Alternative way to save
    { "<C-s>", ":w<CR>" },

    -- Use CTRL+C instead of <ESC>...
    { "<C-c>", "<ESC>" },

    -- Better window movement
    { "<C-h>", "<C-w>h" },
    { "<C-j>", "<C-w>j" },
    { "<C-k>", "<C-w>k" },
    { "<C-l>", "<C-w>l" },

    -- Resize with arrows
    { "<Up>", ":resize +2<CR>" },
    { "<Down>", ":resize -2<CR>" },
    { "<Left>", ":vertical resize -2<CR>" },
    { "<Right>", ":vertical resize +2<CR>" },

    -- QuickFix
    { "]q", ":cnext<CR>" },
    { "[q", ":cprev<CR>" },
    { "<C-q>", ":call QuickFixToggle()<CR>" },

    -- LSP/Trouble
    { "gR", "<cmd>Trouble lsp_references<CR>" },
}

lvim.keys.term_mode = {
    -- Terminal window navigation
    { "<C-h>", "<C-\\><C-N><C-w>h" },
    { "<C-j>", "<C-\\><C-N><C-w>j" },
    { "<C-k>", "<C-\\><C-N><C-w>k" },
    { "<C-l>", "<C-\\><C-N><C-w>l" },
}

lvim.keys.visual_mode = {
    -- Better indenting
    { "<", "<gv" },
    { ">", ">gv" },

    -- Paste most recent yank
    { "p", '"0p', { silent = true } },
    { "P", '"0P', { silent = true } },
}

lvim.keys.visual_block_mode = {
    -- Move selected line / block of text in visual mode
    { "K", ":move '<-2<CR>gv-gv" },
    { "J", ":move '>+1<CR>gv-gv" },
}

-- *
-- Format
-- *
lvim.format_on_save = true

-- *
-- Linting
-- *
lvim.lint_on_save = true

-- *
-- Telescope
-- *
lvim.builtin.telescope.active = true
lvim.builtin.telescope.defaults.file_ignore_patterns = { ".git", "node_modules" }
local get_telescope_mappings = function()
    local actions = require("telescope.actions")
    return {
        i = {
            ["<C-n>"] = actions.cycle_history_next,
            ["<C-p>"] = actions.cycle_history_prev,
            ["<C-c>"] = actions.close,
            ["<C-j>"] = actions.move_selection_next,
            ["<C-k>"] = actions.move_selection_previous,
            ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
            ["<CR>"] = actions.select_default + actions.center,
            ["<c-x>"] = false,
        },
        n = {
            ["<C-j>"] = actions.move_selection_next,
            ["<C-k>"] = actions.move_selection_previous,
            ["<C-q>"] = actions.smart_send_to_qflist + actions.open_qflist,
        },
    }
end
lvim.builtin.telescope.defaults.mappings = get_telescope_mappings()

-- *
-- Dashboard
-- *
lvim.builtin.dashboard.active = true
lvim.builtin.dashboard.custom_section.a.command = "Telescope find_files find_command=rg,--ignore,--hidden,--files"

-- *
-- Terminal
-- *
lvim.builtin.terminal.active = true
lvim.builtin.terminal.shading_factor = 1

-- *
-- Nvimtree
-- *
lvim.builtin.nvimtree.side = "left"
lvim.builtin.nvimtree.show_icons.git = 1
lvim.builtin.nvimtree.hide_dotfiles = 0

-- *
-- Treesitter
-- *
lvim.builtin.treesitter.ensure_installed = "maintained"
lvim.builtin.treesitter.ignore_install = { "haskell" }
lvim.builtin.treesitter.highlight.enabled = true
lvim.builtin.treesitter.matchup.enable = true
lvim.builtin.treesitter.context_commentstring.enable = true

-- *
-- Whichkey
-- *
lvim.builtin.which_key.active = true
lvim.builtin.which_key.mappings["w"] = { "<cmd>w<CR>", "Save" }
lvim.builtin.which_key.mappings["W"] = { "<cmd>w!<CR>", "Force Save" }
lvim.builtin.which_key.mappings["q"] = { "<cmd>q<CR>", "Quit" }
lvim.builtin.which_key.mappings["Q"] = { "<cmd>q!<CR>", "Force Quit" }
lvim.builtin.which_key.mappings["f"] = { "<cmd>lua vim.lsp.buf.formatting()<cr>", "Format" }
lvim.builtin.which_key.mappings["b"]["c"] = { "<cmd>Telescope current_buffer_fuzzy_find<cr>", "Search Current Buffer" }
lvim.builtin.which_key.mappings["s"]["f"] = {
    "<cmd>Telescope find_files find_command=rg,--ignore,--hidden,--files<CR>",
    "Find File",
}
lvim.builtin.which_key.mappings["s"]["m"] = { "<cmd>Telescope marks<cr>", "Search Marks" }
lvim.builtin.which_key.mappings["s"]["g"] = { "<cmd>Telescope git_files<cr>", "Search Git Files" }
lvim.builtin.which_key.mappings["t"] = {
    name = "Toggle",
    h = { "<cmd>set hlsearch!<CR>", "Toggle Highlight" },
    q = { "<cmd>call QuickFixToggle()<CR>", "Toggle Quick Fix List" },
    b = { "<cmd>GitBlameToggle<CR>", "Toggle Git Blame" },
    t = { "<cmd>Twilight<CR>", "Toggle Twilight" },
    i = { "<cmd>IndentBlanklineToggle<CR>", "Toggle Indent Line" },
    x = { "<cmd>TroubleToggle<CR>", "Toggle Trouble" },
}
lvim.builtin.which_key.mappings["z"] = { "<cmd>ZenMode<CR>", "Zen Mode" }
lvim.builtin.which_key.mappings["x"] = {
    name = "Trouble",
    w = { "<cmd>Trouble lsp_workspace_diagnostics<CR>", "Trouble Workspaces" },
    d = { "<cmd>Trouble lsp_document_diagnostics<CR>", "Trouble Document" },
    l = { "<cmd>Trouble loclist<CR>", "Trouble Location List" },
    q = { "<cmd>Trouble quickfix<CR>", "Trouble Quickfix List" },
}

-- *
-- LSP
-- *
-- generic LSP settings
-- you can set a custom on_attach function that will be used for all the language servers
-- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
-- lvim.lsp.on_attach_callback = function(client, bufnr)
--   local function buf_set_option(...)
--     vim.api.nvim_buf_set_option(bufnr, ...)
--   end
--   --Enable completion triggered by <c-x><c-o>
--   buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
-- end

-- *
-- Lang
-- *
lvim.lang.go.formatter.exe = "goimports"

-- *
-- Additional Plugins
-- *

lvim.plugins = {
    {
        "f-person/git-blame.nvim",
        event = "BufRead",
        config = function()
            vim.cmd("highlight default link gitblame SpecialComment")
            vim.g.gitblame_enabled = 0
        end,
    },
    {
        "karb94/neoscroll.nvim",
        event = "BufRead",
        config = function()
            require("neoscroll").setup({
                -- All these keys will be mapped to their corresponding default scrolling animation
                mappings = { "<C-u>", "<C-d>", "<C-b>", "<C-f>", "<C-y>", "<C-e>", "zt", "zz", "zb" },
                hide_cursor = true, -- Hide cursor while scrolling
                stop_eof = true, -- Stop at <EOF> when scrolling downwards
                use_local_scrolloff = false, -- Use the local scope of scrolloff instead of the global scope
                respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file
                cursor_scrolls_alone = false, -- The cursor will keep on scrolling even if the window cannot scroll further
                easing_function = nil, -- Default easing function
            })
        end,
    },
    {
        "folke/zen-mode.nvim",
        cmd = "ZenMode",
        event = "BufRead",
        config = function()
            require("zen-mode").setup({
                window = {
                    backdrop = 1,
                    height = 0.85, -- height of the Zen window
                    options = {
                        signcolumn = "no", -- disable signcolumn
                        number = false, -- disable number column
                        relativenumber = false, -- disable relative numbers
                        -- cursorline = false, -- disable cursorline
                        -- cursorcolumn = false, -- disable cursor column
                        -- foldcolumn = "0", -- disable fold column
                        -- list = false, -- disable whitespace characters
                    },
                },
                plugins = {
                    gitsigns = { enabled = false }, -- disables git signs
                    -- your configuration comes here
                    -- or leave it empty to use the default settings
                    -- refer to the configuration section below
                },
            })
        end,
    },
    {
        "mfussenegger/nvim-lint",
        event = "BufRead",
    },
    {
        "folke/twilight.nvim",
        event = "BufRead",
        config = function()
            require("twilight").setup({
                dimming = {
                    alpha = 0.25, -- amount of dimming
                    -- we try to get the foreground from the highlight groups or fallback color
                    color = { "Normal", "#ffffff" },
                },
                context = 20, -- amount of lines we will try to show around the current line
                -- treesitter is used to automatically expand the visible text,
                -- but you can further control the types of nodes that should always be fully expanded
                expand = { -- for treesitter, we we always try to expand to the top-most ancestor with these types
                    "function",
                    "method",
                    "table",
                    "if_statement",
                },
                exclude = {}, -- exclude these filetypes
            })
        end,
    },
    {
        "lukas-reineke/indent-blankline.nvim",
        setup = function()
            vim.g.indentLine_enabled = 1
            vim.g.indent_blankline_char = "‚ñè"
            vim.g.indent_blankline_filetype_exclude = {
                "help",
                "terminal",
                "dashboard",
            }
            vim.g.indent_blankline_buftype_exclude = { "terminal" }
            vim.g.indent_blankline_show_trailing_blankline_indent = false
            vim.g.indent_blankline_show_first_indent_level = false
        end,
    },
    {
        "projekt0n/github-nvim-theme",
        config = function()
            require("github-theme").setup({
                themeStyle = "dimmed",
                commentStyle = "NONE",
                keywordStyle = "NONE",
                functionStyle = "NONE",
                variableStyle = "NONE",
                sidebars = { "qf", "vista_kind", "terminal", "packer" },
            })
            vim.cmd([[
            colorscheme "github-theme"
            ]])
        end,
    },
    {
        "andymass/vim-matchup",
        event = "CursorMoved",
        config = function()
            vim.g.matchup_matchparen_offscreen = { method = "popup" }
        end,
    },
    { "JoosepAlviste/nvim-ts-context-commentstring", event = "BufRead" },
    {
        "folke/trouble.nvim",
        requires = "kyazdani42/nvim-web-devicons",
        config = function()
            require("trouble").setup({
                position = "bottom", -- position of the list can be: bottom, top, left, right
                height = 10, -- height of the trouble list when position is top or bottom
                width = 50, -- width of the list when position is left or right
                icons = true, -- use devicons for filenames
                mode = "lsp_document_diagnostics",
                action_keys = { -- key mappings for actions in the trouble list
                    -- map to {} to remove a mapping, for example:
                    -- close = {},
                    close = "q", -- close the list
                    cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
                    refresh = "r", -- manually refresh
                    jump = { "<cr>", "<tab>" }, -- jump to the diagnostic or open / close folds
                    open_split = { "<c-x>" }, -- open buffer in new split
                    open_vsplit = { "<c-v>" }, -- open buffer in new vsplit
                    open_tab = { "<c-t>" }, -- open buffer in new tab
                    jump_close = { "o" }, -- jump to the diagnostic and close the list
                    toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode
                    toggle_preview = "P", -- toggle auto_preview
                    hover = "K", -- opens a small popup with the full multiline message
                    preview = "p", -- preview the diagnostic location
                    close_folds = { "zM", "zm" }, -- close all folds
                    open_folds = { "zR", "zr" }, -- open all folds
                    toggle_fold = { "zA", "za" }, -- toggle fold of current file
                    previous = "k", -- preview item
                    next = "j", -- next item
                },
                indent_lines = true, -- add an indent guide below the fold icons
                auto_open = false, -- automatically open the list when you have diagnostics
                auto_close = true, -- automatically close the list when you have no diagnostics
                auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window
                auto_fold = false, -- automatically fold a file trouble list at creation
                use_lsp_diagnostic_signs = true, -- enabling this will use the signs defined in your lsp client
            })
        end,
    },
    {
        "norcalli/nvim-colorizer.lua",
        config = function()
            require("colorizer").setup()
        end,
    },
}
ghost commented 3 years ago

Got 403 Unathorized when trying to do a pull request. Figured I upload it as an issue instead. Sorry for any inconvenience.

Also, do let me know if there are any improvements I can do, e.g. lazy loading, etc.

Uzaaft commented 3 years ago

@johanronkko Since this really is not an issue, I think you should close the issue. Re the 403 error. You first need to fork the project, commit your changes to the project, and then open up a PR. @ChristianChiarulli A readme with project structure would be nice to have, to figure out how you guys have thought that the project should look like. Should the config be in the root folder, or perhaps in a folder with the user's username? Ex:

README.md
--ChristianChiarulli
   |--config.lua
--abzcoding
   |--config.lua

etc etc.

danielo515 commented 1 year ago

So, is this project abandoned?