Browse Source

Simplified my config a lot

Alexey Dorokhov 1 năm trước cách đây
mục cha
commit
45a113a12b
1 tập tin đã thay đổi với 41 bổ sung144 xóa
  1. 41 144
      init.lua

+ 41 - 144
init.lua

@@ -2,17 +2,6 @@
 vim.g.loaded_netrw = 1
 vim.g.loaded_netrwPlugin = 1
 
--- configure neon theme
-vim.g.neon_style = "doom"
-
-vim.g.mapleader = ' '
-vim.g.maplocalleader = ' '
-
--- prepend ghcup to path
-
-vim.env.PATH =  '/home/dora/.cabal/bin:/home/dora/.ghcup/bin:' .. vim.env.PATH
-
-
 -- package manager
 local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
 if not vim.loop.fs_stat(lazypath) then
@@ -30,38 +19,29 @@ vim.opt.rtp:prepend(lazypath)
 require("lazy").setup({
   "nvim-tree/nvim-tree.lua",
   "nvim-tree/nvim-web-devicons",
+  "nvim-lualine/lualine.nvim",
 
+	-- color theme
   {
-    "rafamadriz/neon",
-    config = function ()
-      vim.cmd.colorscheme("neon")
-    end,
-  },
-
-  {
-    "nvim-lualine/lualine.nvim",
-    opts = {
-      options = {
-        theme = "neon",
-      },
-    },
+    "catppuccin/nvim",
+    name = "catppuccin",
+    priority = 1000,
   },
 
   -- LSP
-  {
-    "neovim/nvim-lspconfig",
-    dependencies = {
-      {'williamboman/mason.nvim', config = true},
-      'williamboman/mason-lspconfig.nvim',
-      { 'j-hui/fidget.nvim', tag = 'legacy', opts = {} },
-      'folke/neodev.nvim',
-    }
-  },
-
-	-- Show definitions and referenes in a floating window
-	'rmagatti/goto-preview',
+  "neovim/nvim-lspconfig", -- repo of language server configs
+  "mason-org/mason.nvim", -- package manager (needed for language server)
+  -- mason lspconfig automatically installs language servers mentioned in 
+  -- nvim-lspconfig using mason package manager.
+  "mason-org/mason-lspconfig.nvim",
+	-- configure lua language server for nvim config file
+	{
+		"folke/lazydev.nvim",
+		ft = "lua", -- only load for lua files
+	},
 
   -- Autocompletion
+	-- TODO: look into github.com/ms-jpq/coq_nvim
   {
     'hrsh7th/nvim-cmp',
     dependencies = {
@@ -78,10 +58,10 @@ require("lazy").setup({
   },
 
   -- Useful plugin to show you pending keybinds.
-  { 'folke/which-key.nvim', opts = {} },
+  "folke/which-key.nvim",
 
   -- "gc" to comment visual regions/lines
-  { 'numToStr/Comment.nvim', opts = {} },
+  "numToStr/Comment.nvim",
 
   -- Fuzzy Finder (files, lsp, etc)
   {
@@ -113,14 +93,22 @@ require("lazy").setup({
     build = ':TSUpdate',
   },
 
+  -- Cut text without populating unnamed register
   {
     "gbprod/cutlass.nvim",
     opts = {
       cut_key = "<Leader>x",
     }
-  }
+  },
 })
 
+-- set space key as a leader key
+vim.g.mapleader = ' '
+vim.g.maplocalleader = ' '
+
+-- set the colorscheme
+vim.cmd.colorscheme("catppuccin-macchiato")
+
 -- copy to system clipboard by default
 vim.o.clipboard = "unnamedplus"
 
@@ -134,6 +122,8 @@ vim.opt.hlsearch = true
 vim.opt.tabstop = 2
 vim.opt.shiftwidth = 2
 
+require("lualine").setup({})
+
 require("nvim-tree").setup({
   view = {
     width = 30,
@@ -156,6 +146,10 @@ vim.api.nvim_set_keymap("n", "<Leader>w", "<C-w>", {noremap=true, silent=true})
 vim.api.nvim_set_keymap("n", "<Leader>ft", ":NvimTreeToggle<CR>", {noremap=true, silent=true})
 vim.api.nvim_set_keymap("n", "<BS>", ":NvimTreeFocus<CR>", {noremap=true, silent=true})
 
+-- configure LSP
+require("mason").setup()
+require("mason-lspconfig").setup()
+
 -- configure telescope
 -- See `:help telescope` and `:help telescope.setup()`
 require('telescope').setup {
@@ -270,116 +264,19 @@ require('nvim-treesitter.configs').setup {
 }
 
 -- Diagnostic keymaps
-vim.keymap.set('n', '<Leader>dp', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
-vim.keymap.set('n', '<Leader>dn', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
-vim.keymap.set('n', '<leader>de', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
-vim.keymap.set('n', '<leader>dl', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
-
-require('goto-preview').setup {
-  default_mappings = false,
-  references = { -- Configure the telescope UI for slowing the references cycling window.
-    telescope = require("telescope.themes").get_dropdown({ hide_preview = false })
-  },
-}
-
--- Configure LSP
---  This function gets run when an LSP connects to a particular buffer.
-local on_attach = function(_, bufnr)
-  -- NOTE: Remember that lua is a real programming language, and as such it is possible
-  -- to define small helper and utility functions so you don't have to repeat yourself
-  -- many times.
-  --
-  -- In this case, we create a function that lets us more easily define mappings specific
-  -- for LSP related items. It sets the mode, buffer and description for us each time.
-  local nmap = function(keys, func, desc)
-    if desc then
-      desc = 'LSP: ' .. desc
-    end
-
-    vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
-  end
-
-  nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
-  nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
-
-  nmap('gd', require('goto-preview').goto_preview_definition, '[G]oto [D]efinition')
-  nmap('gr', require('goto-preview').goto_preview_references, '[G]oto [R]eferences')
-  nmap('gc', require('goto-preview').close_all_win, 'Close all preview windows')
-  nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
-  nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
-  nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
-  nmap('<leader>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('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
-
-  -- Lesser used LSP functionality
-  nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-  nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
-  nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
-  nmap('<leader>wl', function()
-    print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
-  end, '[W]orkspace [L]ist Folders')
-
-  -- Create a command `:Format` local to the LSP buffer
-  vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
-    vim.lsp.buf.format()
-  end, { desc = 'Format current buffer with LSP' })
-
-  vim.keymap.set("v", "<leader>k", vim.lsp.buf.format, { remap = false })
-end
-
--- Enable the following language servers
---  Feel free to add/remove any LSPs that you want here. They will automatically be installed.
---
---  Add any additional override configuration in the following tables. They will be passed to
---  the `settings` field of the server config. You must look up that documentation yourself.
---
---  If you want to override the default filetypes that your language server will attach to you can
---  define the property 'filetypes' to the map in question.
-local servers = {
-  clangd = {},
-  gopls = {},
-  pyright = {},
-  rust_analyzer = {},
-	hls = {},
-  -- tsserver = {},
-  -- html = { filetypes = { 'html', 'twig', 'hbs'} },
-
-  lua_ls = {
-    Lua = {
-      workspace = { checkThirdParty = false },
-      telemetry = { enable = false },
-    },
-  },
-}
-
--- Setup neovim lua configuration
-require('neodev').setup()
+vim.keymap.set('n', '<Leader>dp', vim.diagnostic.goto_prev,
+	{ desc = 'Go to previous diagnostic message' })
+vim.keymap.set('n', '<Leader>dn', vim.diagnostic.goto_next,
+	{ desc = 'Go to next diagnostic message' })
+vim.keymap.set('n', '<Leader>de', vim.diagnostic.open_float,
+	{ desc = 'Open floating diagnostic message' })
+vim.keymap.set('n', '<Leader>dl', vim.diagnostic.setloclist,
+	{ desc = 'Open diagnostics list' })
 
 -- nvim-cmp supports additional completion capabilities, so broadcast that to servers
 local capabilities = vim.lsp.protocol.make_client_capabilities()
 capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
 
--- Ensure the servers above are installed
-local mason_lspconfig = require 'mason-lspconfig'
-
-mason_lspconfig.setup {
-  ensure_installed = vim.tbl_keys(servers),
-}
-
-mason_lspconfig.setup_handlers {
-  function(server_name)
-    require('lspconfig')[server_name].setup {
-      capabilities = capabilities,
-      on_attach = on_attach,
-      settings = servers[server_name],
-      filetypes = (servers[server_name] or {}).filetypes,
-    }
-  end
-}
-
 -- Configure autocompletion nvim-cmp
 -- See `:help cmp`
 local cmp = require 'cmp'