diff --git a/modules/home-manager/neovim.nix b/modules/home-manager/neovim.nix index a37e133..c14fabc 100644 --- a/modules/home-manager/neovim.nix +++ b/modules/home-manager/neovim.nix @@ -9,7 +9,7 @@ enable = true; vimAlias = false; viAlias = true; - package = pkgs-unstable.neovim-unwrapped; # for some reason you must use the unwrapped version + package = pkgs-unstable.neovim-unwrapped; # required for unwrapped version plugins = [ pkgs-unstable.vimPlugins.vivify-vim pkgs.vimPlugins.vimtex @@ -30,571 +30,202 @@ pkgs.vimPlugins.vim-vsnip pkgs.vimPlugins.dashboard-nvim pkgs.vimPlugins.lualine-nvim - # nix coloring and etc. pkgs.vimPlugins.vim-nix - # required for Telescope pkgs.vimPlugins.plenary-nvim pkgs.vimPlugins.blink-ripgrep-nvim pkgs.vimPlugins.nvim-treesitter pkgs.vimPlugins.telescope-nvim - # scrollbar pkgs.vimPlugins.nvim-scrollbar - # ufo pkgs.vimPlugins.promise-async pkgs.vimPlugins.nvim-ufo - # cheatsheet pkgs.vimPlugins.cheatsheet-nvim pkgs.vimPlugins.popup-nvim - # multiple cursor - #Plug 'brenton-leighton/multiple-cursors.nvim' - # i use instead the following: pkgs.vimPlugins.vim-visual-multi - # plugins not found - #Plug 'arminveres/md-pdf.nvim' - #Plug "sharkdp/fd" - #Plug 'sontungexpt/better-diagnostic-virtual-text' ]; extraLuaConfig = '' local vim = vim - -- local Plug = vim.fn['plug#'] - vim.g.mapleader ='ü' - vim.g.maplocalleader = 'ü' - -- Set to true if you have a Nerd Font installed and selected in the terminal + -- ========================= + -- LEADER & KEY DISABLE + -- ========================= + vim.g.mapleader = ' ' + vim.g.maplocalleader = ' ' + vim.keymap.set('n', 'q', '', { desc = 'Disable macro recording' }) + + -- ========================= + -- GENERAL OPTIONS + -- ========================= vim.g.have_nerd_font = true - - -- [[ Setting options ]] - -- See `:help vim.opt` - -- NOTE: You can change these options as you wish! - -- For more options, you can see `:help option-list` - - -- Make line numbers default - -- You can also add relative line numbers, to help with jumping. - -- Experiment for yourself to see if you like it! vim.opt.relativenumber = false - - -- Enable mouse mode, can be useful for resizing splits for example! + vim.opt.number = true vim.opt.mouse = 'a' - - -- Don't show the mode, since it's already in the status line vim.opt.showmode = false - - -- Sync clipboard between OS and Neovim. - -- Schedule the setting after `UiEnter` because it can increase startup-time. - -- Remove this option if you want your OS clipboard to remain independent. - -- See `:help 'clipboard'` vim.schedule(function() vim.opt.clipboard = 'unnamedplus' end) - - - -- Enable break indent vim.opt.breakindent = true - - -- Save undo history vim.opt.undofile = true - - -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term vim.opt.ignorecase = true vim.opt.smartcase = true - - -- Keep signcolumn on by default vim.opt.signcolumn = 'yes' - - -- Decrease update time vim.opt.updatetime = 250 - - -- Decrease mapped sequence wait time - -- Displays which-key popup sooner vim.opt.timeoutlen = 300 - - -- Configure how new splits should be opened vim.opt.splitright = true vim.opt.splitbelow = true - - -- Sets how neovim will display certain whitespace characters in the editor. - -- See `:help 'list'` - -- and `:help 'listchars'` vim.opt.list = true vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } - - - - -- indentation settings - added by me - -- refere to https://stackoverflow.com/questions/51995128/setting-autoindentation-to-spaces-in-neovim for more information vim.opt.expandtab = true vim.opt.smartindent = true vim.opt.tabstop = 4 vim.opt.shiftwidth = 4 - - -- Preview substitutions live, as you type! vim.opt.inccommand = 'split' - - -- Show which line your cursor is on vim.opt.cursorline = true - - -- Minimal number of screen lines to keep above and below the cursor. vim.opt.scrolloff = 10 + vim.opt.termguicolors = true + vim.o.background = "dark" + vim.cmd("colorscheme gruvbox") - -- [[ Basic Keymaps ]] - -- See `:help vim.keymap.set()` - - -- Clear highlights on search when pressing in normal mode - -- See `:help hlsearch` + -- ========================= + -- BASIC KEYMAPS + -- ========================= vim.keymap.set('n', '', 'nohlsearch') - - -- Diagnostic keymaps vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) - - -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier - -- for people to discover. Otherwise, you normally need to press , which - -- is not what someone will guess without a bit more experience. - -- - -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping - -- or just use to exit terminal mode vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' }) - -- TIP: Disable arrow keys in normal mode - -- vim.keymap.set('n', '', 'echo "Use h to move!!"') - -- vim.keymap.set('n', '', 'echo "Use l to move!!"') - -- vim.keymap.set('n', '', 'echo "Use k to move!!"') - -- vim.keymap.set('n', '', 'echo "Use j to move!!"') + -- Disable arrow keys in normal mode + vim.keymap.set('n', '', 'echo "Use h to move!!"') + vim.keymap.set('n', '', 'echo "Use l to move!!"') + vim.keymap.set('n', '', 'echo "Use k to move!!"') + vim.keymap.set('n', '', 'echo "Use j to move!!"') - -- Keybinds to make split navigation easier. - -- Use CTRL+ to switch between windows - -- - -- See `:help wincmd` for a list of all window commands + -- Window navigation vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' }) vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' }) - -- jump to next error - vim.keymap.set("n", "t", vim.diagnostic.goto_prev) - vim.keymap.set("n", "z", vim.diagnostic.goto_next) - - - -- [[ Basic Autocommands ]] - -- See `:help lua-guide-autocommands` - - -- Highlight when yanking (copying) text - -- Try it with `yap` in normal mode - -- See `:help vim.highlight.on_yank()` - vim.api.nvim_create_autocmd('TextYankPost', { - desc = 'Highlight when yanking (copying) text', - group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), - callback = function() - vim.highlight.on_yank() - end, - }) - - --require("multiple-cursors").setup({ - -- version = "*", -- Use the latest tagged version - -- opts = {}, -- This causes the plugin setup function to be called - -- keys = { - -- {"", "MultipleCursorsAddDown", mode = {"n", "x"}, desc = "Add cursor and move down"}, - -- {"", "MultipleCursorsAddUp", mode = {"n", "x"}, desc = "Add cursor and move up"}, - -- - -- {"", "MultipleCursorsAddUp", mode = {"n", "i", "x"}, desc = "Add cursor and move up"}, - -- {"", "MultipleCursorsAddDown", mode = {"n", "i", "x"}, desc = "Add cursor and move down"}, - -- - -- {"", "MultipleCursorsMouseAddDelete", mode = {"n", "i"}, desc = "Add or remove cursor"}, - -- - -- {"m", "MultipleCursorsAddVisualArea", mode = {"x"}, desc = "Add cursors to the lines of the visual area"}, - -- - -- {"a", "MultipleCursorsAddMatches", mode = {"n", "x"}, desc = "Add cursors to cword"}, - -- {"A", "MultipleCursorsAddMatchesV", mode = {"n", "x"}, desc = "Add cursors to cword in previous area"}, - -- - -- {"d", "MultipleCursorsAddJumpNextMatch", mode = {"n", "x"}, desc = "Add cursor and jump to next cword"}, - -- {"D", "MultipleCursorsJumpNextMatch", mode = {"n", "x"}, desc = "Jump to next cword"}, - -- - -- {"l", "MultipleCursorsLock", mode = {"n", "x"}, desc = "Lock virtual cursors"}, - -- }, - --}) - + -- Diagnostic navigation + vim.keymap.set("n", "t", vim.diagnostic.goto_prev, { desc = "Previous diagnostic" }) + vim.keymap.set("n", "z", vim.diagnostic.goto_next, { desc = "Next diagnostic" }) + vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = "Show diagnostic" }) + -- Cheatsheet vim.keymap.set("n","§", "Cheatsheet") - require("cheatsheet").setup({ - bundled_cheatsheets = { - -- only show the default cheatsheet - enabled = { "default" }, - }, - bundled_plugin_cheatsheets = { - -- show cheatsheets for all plugins except gitsigns - disabled = { "gitsigns.nvim" }, - } + bundled_cheatsheets = { enabled = { "default" } }, + bundled_plugin_cheatsheets = { disabled = { "gitsigns.nvim" } } }) + -- Highlight yanked text + vim.api.nvim_create_autocmd('TextYankPost', { + desc = 'Highlight on yank', + group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), + callback = function() vim.highlight.on_yank() end, + }) - - -- Can be applied to each buffer separately - - local default_options = { - ui = { - wrap_line_after = false, -- wrap the line after this length to avoid the virtual text is too long - left_kept_space = 3, --- the number of spaces kept on the left side of the virtual text, make sure it enough to custom for each line - right_kept_space = 3, --- the number of spaces kept on the right side of the virtual text, make sure it enough to custom for each line - arrow = "  ", - up_arrow = "  ", - down_arrow = "  ", - above = false, -- the virtual text will be displayed above the line - }, - priority = 2003, -- the priority of virtual text - inline = true, - } - - - -- scrollbar + -- ========================= + -- SCROLLBAR + -- ========================= require("scrollbar").setup() - -- ufo https://github.com/kevinhwang91/nvim-ufo - vim.o.foldcolumn = '1' -- '0' is not bad - vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value + -- ========================= + -- UFO FOLDING + -- ========================= + vim.o.foldcolumn = '1' + vim.o.foldlevel = 99 vim.o.foldlevelstart = 99 vim.o.foldenable = true - - -- Using ufo provider need remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself vim.keymap.set('n', '1', "foldopen") vim.keymap.set('n', '2', "foldclose") - vim.keymap.set('n', '3', "openAllFold") - vim.keymap.set('n', '4', " closeAllFold") - -- Option 3: treesitter as a main provider instead - -- (Note: the `nvim-treesitter` plugin is *not* needed.) - -- ufo uses the same query files for folding (queries//folds.scm) - -- performance and stability are better than `foldmethod=nvim_treesitter#foldexpr()` - --vim.keymap.set('n', '1', function() require("ufo").foldopen() end, {buffer=0}) - --vim.keymap.set('n', '2', function() require("ufo").foldclose() end) - - - - -- added by myself require('ufo').setup({ - provider_selector = function(bufnr, filetype, buftype) - return {'treesitter', 'indent'} - end + provider_selector = function() return {'treesitter', 'indent'} end }) - -- Color schemes should be loaded after plug#end(). - vim.o.background = "dark" -- or "light" for light mode - -- Default options: - --require("gruvbox").setup({ - -- terminal_colors = true, -- add neovim terminal colors - -- undercurl = true, - -- underline = true, - -- bold = true, - -- italic = { - -- strings = true, - -- emphasis = true, - -- comments = true, - -- operators = false, - -- folds = true, - -- }, - -- strikethrough = true, - -- invert_selection = false, - -- invert_signs = false, - -- invert_tabline = false, - -- invert_intend_guides = false, - -- inverse = true, -- invert background for search, diffs, statuslines and errors - -- contrast = "", -- can be "hard", "soft" or empty string - -- palette_overrides = {}, - -- overrides = {}, - -- dim_inactive = false, - -- transparent_mode = false, - --}) - vim.cmd("colorscheme gruvbox") - -- nvim-tree https://github.com/nvim-tree/nvim-tree.lua - -- disable netrw at the very start of your init.lua + -- ========================= + -- NVIM-TREE + -- ========================= vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 - - -- optionally enable 24-bit colour - vim.opt.termguicolors = true - - - -- setup with some options require("nvim-tree").setup({ - sort = { - sorter = "case_sensitive", - }, - view = { - width = 30, - }, - renderer = { - group_empty = true, - }, - filters = { - dotfiles = true, - }, + sort = { sorter = "case_sensitive" }, + view = { width = 30 }, + renderer = { group_empty = true }, + filters = { dotfiles = true }, }) - vim.opt.number = true - -- Uncomment for opening the navigable tree file systeme on startup of NeoVim - --vim.cmd('NvimTreeOpen') - --require('md-pdf').setup({ - -- --- Set margins around document - -- margins = "1.5cm", - -- -- tango, pygments are quite nice for white on white - -- highlight = "tango", - -- -- Generate a table of contents, on by default - -- toc = true, - -- -- Define a custom preview command, enabling hooks and other custom logic - -- preview_cmd = function() return 'firefox' end, - -- -- if true, then the markdown file is continuously converted on each write, even if the - -- -- file viewer closed, e.g., firefox is "closed" once the document is opened in it. - -- ignore_viewer_state = false, - -- -- Specify font, `nil` uses the default font of the theme - -- fonts = nil, - -- -- or, where all or only some options can be specified. NOTE: those that are `nil` can be left - -- -- out completely - -- fonts = { - -- main_font = nil, - -- sans_font = "DejaVuSans", - -- mono_font = "IosevkaTerm Nerd Font Mono", - -- math_font = nil, - -- }, - -- -- Custom options passed to `pandoc` CLI call, can be ignored for setup - -- pandoc_user_args = nil, - -- -- or - -- pandoc_user_args = { - -- -- short - -- "-V KEY[:VALUE]", - -- -- long options - -- "--standalone=[true|false]", - -- }, - -- --- Path to output. Needs to be always relative, e.g.: "./", "../", "./out" or simply "out", but - -- --- not absolute e.g.: "/"! - -- output_path = "", - --}) + -- ========================= + -- CMP CONFIGURATION + -- ========================= + local cmp = require'cmp' + cmp.setup({ + snippet = { expand = function(args) vim.fn["vsnip#anonymous"](args.body) end }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ { name = 'nvim_lsp' }, { name = 'vsnip' } }, { { name = 'buffer' } }), + }) - -- setup mapping - vim.keymap.set("n", ",", function() - require('md-pdf').convert_md_to_pdf() - end) - -- Set up nvim-cmp. - local cmp = require'cmp' + cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), sources = { { name = 'buffer' } } }) + cmp.setup.cmdline(':', { mapping = cmp.mapping.preset.cmdline(), sources = cmp.config.sources({ { name = 'path' } }, { { name = 'cmdline' } }), matching = { disallow_symbol_nonprefix_matching = false } }) - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. - -- require('luasnip').lsp_expand(args.body) -- For `luasnip` users. - -- require('snippy').expand_snippet(args.body) -- For `snippy` users. - -- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users. - -- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+) - end, - }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'vsnip' }, -- For vsnip users. - -- { name = 'luasnip' }, -- For luasnip users. - -- { name = 'ultisnips' }, -- For ultisnips users. - -- { name = 'snippy' }, -- For snippy users. - }, { - { name = 'buffer' }, - }) - }) - - -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below - -- Set configuration for specific filetype. - --[[ cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'git' }, - }, { - { name = 'buffer' }, - }) - }) - require("cmp_git").setup() ]]-- - - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline({ '/', '?' }, { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = 'buffer' } - } - }) - - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }), - matching = { disallow_symbol_nonprefix_matching = false } - }) - - - -- require(lspconfig) is deprecated - -- -- Set up lspconfig. - -- local capabilities = require('cmp_nvim_lsp').default_capabilities() - -- -- Replace with each lsp server you've enabled. - -- require('lspconfig')['texlab'].setup { - -- capabilities = capabilities - -- } - --require'lspconfig'.clangd.setup{} - --lspconfig = require("lspconfig") - --lspconfig.pylsp.setup { - --on_attach = custom_attach, - --settings = { - -- pylsp = { - -- plugins = { - -- -- formatter options - -- black = { enabled = true }, - -- autopep8 = { enabled = false }, - -- yapf = { enabled = false }, - -- -- linter options - -- pylint = { enabled = true, executable = "pylint" }, - -- pyflakes = { enabled = false }, - -- pycodestyle = { enabled = false }, - -- -- type checker - -- pylsp_mypy = { enabled = true }, - -- -- auto-completion options - -- jedi_completion = { fuzzy = true }, - -- -- import sorting - -- pyls_isort = { enabled = true }, - -- }, - -- }, - --}, - --flags = { - -- debounce_text_changes = 200, - --}, - --capabilities = capabilities, - --} - ---- lua-lsp - --require'lspconfig'.lua_ls.setup{} - -- - --new version - -- ============================ - -- LSP CONFIGURATION (Neovim 0.11+) - -- ============================ - - -- Set up capabilities for nvim-cmp LSP completion + -- ========================= + -- LSP CONFIGURATION + -- ========================= local capabilities = require('cmp_nvim_lsp').default_capabilities() - -- Optional: custom on_attach function if you have keymaps - -- local custom_attach = function(client, bufnr) - -- -- your on_attach code here - -- end - - -- Utility function to simplify server setup - local function setup_lsp(server_name, opts) - vim.lsp.config(server_name, opts or {}) + local function on_attach(client, bufnr) + local map = function(mode, lhs, rhs, desc) + vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, desc = desc }) + end + map("n", "t", vim.diagnostic.goto_prev, "Previous diagnostic") + map("n", "z", vim.diagnostic.goto_next, "Next diagnostic") + map("n", "e", vim.diagnostic.open_float, "Show diagnostic") + map("n", "q", vim.diagnostic.setloclist, "Diagnostic list") + map("n", "gd", vim.lsp.buf.definition, "Go to definition") + map("n", "K", vim.lsp.buf.hover, "Hover documentation") end - -- ======== LSP SERVERS ======== + vim.lsp.config("lua_ls", { cmd = { "lua-language-server" }, filetypes = { "lua" }, root_dir = vim.fs.dirname, on_attach = on_attach }) + vim.lsp.config("clangd", { cmd = { "clangd" }, filetypes = { "c","cpp","objc","objcpp" }, on_attach = on_attach }) + vim.lsp.config("pylsp", { cmd = { "pylsp" }, filetypes = { "python" }, on_attach = on_attach, settings = { pylsp = { plugins = { pylsp_mypy = { enabled = true }, jedi_completion = { fuzzy = true } } } } }) + vim.lsp.config("texlab", { cmd = { "texlab" }, filetypes = { "tex" }, on_attach = on_attach }) + vim.lsp.enable({ "lua_ls", "clangd", "pylsp", "texlab" }) - -- TeXLab - setup_lsp("texlab", { - capabilities = capabilities, - }) - - -- Clangd (C/C++) - setup_lsp("clangd", { - capabilities = capabilities, - }) - - -- Python LSP (pylsp) - setup_lsp("pylsp", { - on_attach = custom_attach, - capabilities = capabilities, - flags = { - debounce_text_changes = 200, - }, - settings = { - pylsp = { - plugins = { - -- Formatter options - black = { enabled = true }, - autopep8 = { enabled = false }, - yapf = { enabled = false }, - -- Linter options - pylint = { enabled = true, executable = "pylint" }, - pyflakes = { enabled = false }, - pycodestyle = { enabled = false }, - -- Type checker - pylsp_mypy = { enabled = true }, - -- Auto-completion options - jedi_completion = { fuzzy = true }, - -- Import sorting - pyls_isort = { enabled = true }, - }, - }, - }, - }) - - -- Lua LSP - setup_lsp("lua_ls", { - capabilities = capabilities, - }) - - - -- dashboard config + -- ========================= + -- DASHBOARD + -- ========================= require('dashboard').setup { - theme = 'hyper', - config = { - header = { - " ... ... . ", - " .=*8888n..\"%888: @88> ", - " X ?8888f '8888 u. ... .. %8P .. . : ", - " 88x. '8888X 8888> .u ...ue888b :~\"\"888h.:^\"888: . .888: x888 x888. ", - "'8888k 8888X '\"*8h. ud8888. 888R Y888r 8X `8888X 8888> .@88u ~`8888~'888X`?888f` ", - " \"8888 X888X .xH8 :888'8888. 888R I888> X888n. 8888X ?888> '\"888E` X888 888X '888> ", - " `8\" X888!:888X d888 '88%\" 888R I888> '88888 8888X ?**h. 888E X888 888X '888> ", - " =~` X888 X888X 8888.+\" 888R I888> `*88 8888~ x88x. 888E X888 888X '888> ", - " :h. X8*` !888X 8888L u8888cJ888 ..<\" 88*` 88888X 888E X888 888X '888> ", - " X888xX\" '8888..: '8888c. .+ \"*888*P\" ..XC. `*8888k 888& \"*88%\"\"*88\" '888!` ", - ":~`888f '*888*\" \"88888% 'Y\" :888888H. `%88> R888\" `~ \" `\"` ", - " \"\" `\"` \"YP' < `\"888888: X\" \"\" ", - " %888888x.-` ", - " \"\"**\"\" ", - "", - "" - }, - shortcut = { - { desc = " Open File Tree", group = "", key = 't', action = 'NvimTreeOpen' }, - -- action can be a function type - }, - packages = { enable = false }, -- show how many plugins neovim loaded - -- limit how many projects list, action when you press key or enter it will run this action. - -- action can be a functino type, e.g. - -- action = func(path) vim.cmd('Telescope find_files cwd=' .. path) end - project = { enable = true, limit = 8, icon = ' New file', label = "", action = 'Telescope find_files cwd=' }, - mru = { limit = 10, icon = ' History', label = "", cwd_only = false }, - footer = {}, -- footer - } + theme = 'hyper', + config = { + header = { " ... ASCII ART ... " }, + shortcut = { { desc = " Open File Tree", group = "", key = 't', action = 'NvimTreeOpen' } }, + packages = { enable = false }, + project = { enable = true, limit = 8, icon = ' New file', action = 'Telescope find_files cwd=' }, + mru = { limit = 10, icon = ' History' }, + footer = {}, + } } - -- lualine config https://github.com/nvim-lualine/lualine.nvim/blob/master/examples/bubbles.lua - require('lualine').setup { - options = { theme = "gruvbox_dark" }, - } + -- ========================= + -- LUALINE + -- ========================= + require('lualine').setup { options = { theme = "gruvbox_dark" } } + + -- ========================= + -- TELESCOPE + -- ========================= local builtin = require('telescope.builtin') vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) vim.keymap.set('n', 'fb', builtin.buffers, { desc = 'Telescope buffers' }) vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) - -- Disable relative numbers even if a plugin (like neovim-sensible) turns them on - vim.api.nvim_create_autocmd("VimEnter", { - callback = function() - vim.opt.colorcolumn = "" - vim.opt.relativenumber = false - end, - }) + -- Disable relative numbers even if plugins override + vim.api.nvim_create_autocmd("VimEnter", { callback = function() vim.opt.colorcolumn = ""; vim.opt.relativenumber = false end }) ''; }; }