From 7f49d1d67571669e8aaa93202212aeb47d23ba1c Mon Sep 17 00:00:00 2001 From: juanmagalhaes Date: Mon, 14 Aug 2023 12:19:02 -0300 Subject: [PATCH] Move default settings into module. Move neotree into plugins. Add new mappings --- init.lua | 122 +++++++++++++++++--------------- lua/custom/plugins/filetree.lua | 24 ------- lua/editor-settings.lua | 43 +++++++++++ lua/plugins.lua | 46 ++++++------ 4 files changed, 132 insertions(+), 103 deletions(-) delete mode 100644 lua/custom/plugins/filetree.lua create mode 100644 lua/editor-settings.lua diff --git a/init.lua b/init.lua index a52079e4..a82c6a90 100644 --- a/init.lua +++ b/init.lua @@ -12,49 +12,7 @@ require "lazy-bootstrap" -- Declare and setup plugins require "plugins" - --- [[ Setting options ]] --- See `:help vim.o` --- NOTE: You can change these options as you wish! - --- Disale Swap Files -vim.opt.swapfile = false - --- Set highlight on search -vim.o.hlsearch = true - --- Make line numbers default -vim.wo.number = true - --- Enable mouse mode -vim.o.mouse = 'a' - --- Sync clipboard between OS and Neovim. -vim.o.clipboard = 'unnamedplus' - --- Enable break indent -vim.o.breakindent = true - --- Save undo history -vim.o.undofile = true - --- Case-insensitive searching UNLESS \C or capital in search -vim.o.ignorecase = true -vim.o.smartcase = true - --- Keep signcolumn on by default -vim.wo.signcolumn = 'yes' - --- Decrease update time -vim.o.updatetime = 250 -vim.o.timeout = true -vim.o.timeoutlen = 300 - --- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' - --- NOTE: You should make sure your terminal supports this -vim.o.termguicolors = true +require "editor-settings" -- [[ Basic Keymaps ]] @@ -66,6 +24,9 @@ vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) +-- Stop yanking on paste +vim.keymap.set('x', 'p', 'P') + -- [[ Highlight on yank ]] -- See `:help vim.highlight.on_yank()` local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) @@ -77,6 +38,20 @@ vim.api.nvim_create_autocmd('TextYankPost', { pattern = '*', }) +-- Remove highlight search +vim.keymap.set('n', 'l', ':nohls', { silent = true }) + +-- Split resize +vim.keymap.set('n', '', ':res +1', { desc = 'Resize split' }) +vim.keymap.set('n', '', ':res -1', { desc = 'Resize split' }) +vim.keymap.set('n', '', ':vertical res -1', { desc = 'Resize split vertically' }) +vim.keymap.set('n', '', ':vertical res +1', { desc = 'Resize split vertically' }) + +-- Neotree mappings + +vim.keymap.set('n', '', ':Neotree toggle', { desc = 'File tree' }) +vim.keymap.set('n', 'nf', ':Neotree filesystem reveal', { desc = 'Reveal in file tree' }) + -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` require('telescope').setup { @@ -94,20 +69,24 @@ require('telescope').setup { pcall(require('telescope').load_extension, 'fzf') -- See `:help telescope.builtin` -vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) -vim.keymap.set('n', '/', function() - -- You can pass additional configuration to telescope to change theme, layout, etc. - require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { - winblend = 10, - previewer = false, - }) -end, { desc = '[/] Fuzzily search in current buffer' }) - -vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) -vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) + +-- vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) + +--[[ + vim.keymap.set('n', '/', function() + -- You can pass additional configuration to telescope to change theme, layout, etc. + require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { + winblend = 10, + previewer = false, + }) + end, { desc = '[/] Fuzzily search in current buffer' }) +--]] + +vim.keymap.set('n', '', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) +vim.keymap.set('n', 'K', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) +vim.keymap.set('n', '', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) -vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) -vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) +vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) -- Neotree @@ -188,6 +167,16 @@ vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnos vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) +-- Tsserver run organize imports command +local function organize_imports() + local params = { + command = "_typescript.organizeImports", + arguments = { vim.api.nvim_buf_get_name(0) }, + title = "" + } + vim.lsp.buf.execute_command(params) +end + -- [[ Configure LSP ]] -- This function gets run when an LSP connects to a particular buffer. local on_attach = function(_, bufnr) @@ -216,8 +205,8 @@ local on_attach = function(_, bufnr) nmap('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') -- See `:help K` for why this keymap - nmap('K', vim.lsp.buf.hover, 'Hover Documentation') - nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') + nmap('M', vim.lsp.buf.hover, 'Hover Documentation') + nmap('', vim.lsp.buf.signature_help, 'Signature Documentation') -- Lesser used LSP functionality nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') @@ -227,6 +216,10 @@ local on_attach = function(_, bufnr) print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, '[W]orkspace [L]ist Folders') + + -- tsserver organize imports + nmap('oi', organize_imports, 'OrganizeImports') + -- Create a command `:Format` local to the LSP buffer vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) vim.lsp.buf.format() @@ -243,7 +236,7 @@ local servers = { -- gopls = {}, -- pyright = {}, -- rust_analyzer = {}, - -- tsserver = {}, + tsserver = {}, lua_ls = { Lua = { @@ -277,6 +270,17 @@ mason_lspconfig.setup_handlers { end, } +require('lspconfig').tsserver.setup { + on_attach = on_attach, + capabilities = capabilities, + commands = { + OrganizeImports = { + organize_imports, + description = "Organize Imports" + } + } +} + -- [[ Configure nvim-cmp ]] -- See `:help cmp` local cmp = require 'cmp' diff --git a/lua/custom/plugins/filetree.lua b/lua/custom/plugins/filetree.lua deleted file mode 100644 index 812854e5..00000000 --- a/lua/custom/plugins/filetree.lua +++ /dev/null @@ -1,24 +0,0 @@ --- Unless you are still migrating, remove the deprecated commands from v1.x -vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]]) - -return { - "nvim-neo-tree/neo-tree.nvim", - version = "*", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended - "MunifTanjim/nui.nvim", - }, - config = function() - require('neo-tree').setup { - filesystem = { - filtered_items = { - visible = false, - hide_dotfiles = false, - } - } - } - - vim.keymap.set('n', '', ':Neotree toggle', { desc = '(nvim-tree) File tree' }) - end, -} diff --git a/lua/editor-settings.lua b/lua/editor-settings.lua new file mode 100644 index 00000000..4235d786 --- /dev/null +++ b/lua/editor-settings.lua @@ -0,0 +1,43 @@ +-- [[ Setting options ]] +-- See `:help vim.o` +-- NOTE: You can change these options as you wish! + +-- Disale Swap Files +vim.opt.swapfile = false + +-- Set highlight on search +vim.o.hlsearch = true + +-- Make line numbers default +vim.wo.number = true + +-- Enable mouse mode +vim.o.mouse = 'a' + +-- Sync clipboard between OS and Neovim. +vim.o.clipboard = 'unnamedplus' + +-- Enable break indent +vim.o.breakindent = true + +-- Save undo history +vim.o.undofile = true + +-- Case-insensitive searching UNLESS \C or capital in search +vim.o.ignorecase = true +vim.o.smartcase = true + +-- Keep signcolumn on by default +vim.wo.signcolumn = 'yes' + +-- Decrease update time +vim.o.updatetime = 250 +vim.o.timeout = true +vim.o.timeoutlen = 300 + +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noselect' + +-- NOTE: You should make sure your terminal supports this +vim.o.termguicolors = true + diff --git a/lua/plugins.lua b/lua/plugins.lua index aa0b5434..db7b3155 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -56,26 +56,6 @@ local plugins = { 'folke/which-key.nvim', opts = {} }, - { - -- Adds git releated signs to the gutter, as well as utilities for managing changes - 'lewis6991/gitsigns.nvim', - opts = { - -- See `:help gitsigns.txt` - signs = { - add = { text = '+' }, - change = { text = '~' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, - }, - on_attach = function(bufnr) - vim.keymap.set('n', 'gp', require('gitsigns').prev_hunk, - { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) - vim.keymap.set('n', 'gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) - vim.keymap.set('n', 'ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) - end, - }, - }, { -- Theme inspired by Atom @@ -142,6 +122,32 @@ local plugins = { build = ':TSUpdate', }, + -- Neo Tree + { + "nvim-neo-tree/neo-tree.nvim", + branch = "v3.x", + dependencies = { + "nvim-lua/plenary.nvim", + "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended + "MunifTanjim/nui.nvim", + }, + config = function() + require('neo-tree').setup { + filesystem = { + filtered_items = { + visible = false, + hide_dotfiles = false, + } + }, + } + end, + }, + + { + "mg979/vim-visual-multi", + branch = "master" + }, + require 'kickstart.plugins.autoformat', -- require 'kickstart.plugins.debug',