From d350f910b676cb7313930a2cebccbb7494c8f780 Mon Sep 17 00:00:00 2001 From: pgolik Date: Wed, 25 Sep 2024 22:34:37 +0200 Subject: [PATCH] Inserting zoxide --- init.lua | 43 ++++++++++++++++++++++++++++++++----- lua/custom/autocommands.lua | 13 +++++++++++ lua/custom/keymap.lua | 35 ++++++++++++++++++++++++++++++ lua/custom/vim_options.lua | 40 ++++++++++++++++++++++++++++++++++ 4 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 lua/custom/autocommands.lua create mode 100644 lua/custom/keymap.lua create mode 100644 lua/custom/vim_options.lua diff --git a/init.lua b/init.lua index 071cf074..c172411a 100644 --- a/init.lua +++ b/init.lua @@ -279,7 +279,7 @@ require('lazy').setup({ }, }, }, - + { 'jvgrootveld/telescope-zoxide', opts = {} }, -- NOTE: Plugins can also be configured to run Lua code when they are loaded. -- -- This is often very useful to both group configuration, as well as handle @@ -403,6 +403,7 @@ require('lazy').setup({ -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` + local z_utils = require 'telescope._extensions.zoxide.utils' require('telescope').setup { -- You can put your default mappings / updates / etc. in here -- All the info you're looking for is in `:help telescope.setup()` @@ -422,11 +423,42 @@ require('lazy').setup({ auto_quoting = true, theme = 'dropdown', }, + ['zoxide'] = { + prompt_title = '[ Zoxide List ]', + + -- Zoxide list command with score + list_command = 'zoxide query -ls', + mappings = { + default = { + action = function(selection) + vim.cmd.cd(selection.path) + end, + after_action = function(selection) + vim.notify('Directory changed to ' .. selection.path) + end, + }, + [''] = { action = z_utils.create_basic_command 'split' }, + [''] = { action = z_utils.create_basic_command 'vsplit' }, + [''] = { action = z_utils.create_basic_command 'edit' }, + [''] = { + keepinsert = true, + action = function(selection) + builtin.find_files { cwd = selection.path } + end, + }, + [''] = { + action = function(selection) + vim.cmd.tcd(selection.path) + end, + }, + }, + }, }, } -- Enable Telescope extensions if they are installed pcall(require('telescope').load_extension, 'fzf') + pcall(require('telescope').load_extension, 'zoxide') pcall(require('telescope').load_extension, 'ui-select') -- See `:help telescope.builtin` @@ -740,8 +772,8 @@ require('lazy').setup({ end, formatters_by_ft = { cmake = { 'cmakelang' }, - cpp = { 'clang_format' }, - json = { 'clang_format' }, + cpp = { 'clang-format' }, + json = { 'clang-format' }, lua = { 'stylua' }, -- Conform can also run multiple formatters sequentially python = { 'isort' }, @@ -879,7 +911,7 @@ require('lazy').setup({ -- Load the colorscheme here. -- Like many other themes, this one has different styles, and you could load -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'wildcharm' + vim.cmd.colorscheme 'retrobox' -- You can configure highlights by doing something like: vim.cmd.hi 'Comment gui=none' @@ -971,7 +1003,7 @@ require('lazy').setup({ -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', + require 'kickstart.plugins.indent_line', -- require 'kickstart.plugins.lint', -- require 'kickstart.plugins.autopairs', -- require 'kickstart.plugins.neo-tree', @@ -1042,3 +1074,4 @@ require('lazy').setup({ -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et +require 'custom/keymap' diff --git a/lua/custom/autocommands.lua b/lua/custom/autocommands.lua new file mode 100644 index 00000000..533cb3c2 --- /dev/null +++ b/lua/custom/autocommands.lua @@ -0,0 +1,13 @@ +-- [[ 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, +}) diff --git a/lua/custom/keymap.lua b/lua/custom/keymap.lua new file mode 100644 index 00000000..c3936c81 --- /dev/null +++ b/lua/custom/keymap.lua @@ -0,0 +1,35 @@ +-- [[ Basic Keymaps ]] +-- See `:help vim.keymap.set()` + +-- Set highlight on search, but clear on pressing in normal mode +vim.keymap.set('n', 'fa', 'lua vim.lsp.buf.format()') +vim.keymap.set('n', 'mt', 'NvimTreeFocus') +vim.keymap.set('n', '', 'ClangdSwitchSourceHeader') +vim.keymap.set('n', '', 'nohlsearch') +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' }) +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' }) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) +vim.keymap.set('n', 'z', require('telescope').extensions.zoxide.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!!"') + +-- Keybinds to make split navigation easier. +-- Use CTRL+ to switch between windows +-- +-- See `:help wincmd` for a list of all window commands +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' }) diff --git a/lua/custom/vim_options.lua b/lua/custom/vim_options.lua new file mode 100644 index 00000000..a2ae4556 --- /dev/null +++ b/lua/custom/vim_options.lua @@ -0,0 +1,40 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 +vim.g.have_nerd_font = true +vim.opt.tabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.encoding = 'UTF-8' +vim.opt.wrap = false +vim.opt.termguicolors = true +vim.opt.autoindent = true +vim.api.nvim_create_augroup('neotree', {}) +vim.api.nvim_create_autocmd('UiEnter', { + desc = 'Open Neotree automatically', + group = 'neotree', + callback = function() + if vim.fn.argc() == 0 then + vim.cmd 'NvimTreeToggle' + end + end, +}) +vim.opt.number = true +vim.opt.mouse = 'a' +vim.opt.showmode = false +vim.opt.clipboard = 'unnamedplus' +vim.opt.breakindent = true +vim.opt.undofile = true +vim.opt.ignorecase = true +vim.opt.smartcase = true +vim.opt.signcolumn = 'yes' +vim.opt.updatetime = 250 +vim.opt.timeoutlen = 300 +vim.opt.splitright = true +vim.opt.splitbelow = true +vim.opt.list = true +vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } +vim.opt.inccommand = 'split' +vim.opt.cursorline = true +vim.opt.scrolloff = 10 +vim.opt.hlsearch = true