diff --git a/nvim/init.lua b/nvim/init.lua index 4009fa8..149da16 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -4,12 +4,12 @@ if vim.loader then end -- Setup default options -require("options") -require("keymaps") +require "options" +require "keymaps" -- Are we inside Neovide? if vim.g.neovide then - require("neovide") + require "neovide" end -- Are we outside VSCode? @@ -22,7 +22,7 @@ if not vim.g.vscode then "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release + "--branch=stable", lazypath, }) end @@ -30,14 +30,15 @@ if not vim.g.vscode then -- Load lazy local ok, err = pcall(function() - local plugins, lazy = require("plugins"), require("lazy") + local plugins = require "plugins" + local lazy = require "lazy" + lazy.setup(plugins) - vim.keymap.set('n', 'pm', lazy.home, { desc = "Package manager: open" }) end) - if not ok then - -- save my eyes - vim.cmd("colorscheme slate") + if not ok and err then + vim.cmd "colorscheme slate" + vim.schedule(function() vim.notify(err, vim.log.levels.ERROR) end) diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json index 5dd0648..d3af0a0 100644 --- a/nvim/lazy-lock.json +++ b/nvim/lazy-lock.json @@ -1,5 +1,5 @@ { - "LuaSnip": { "branch": "master", "commit": "0b4950a237ce441a6a3a947d501622453f6860ea" }, + "LuaSnip": { "branch": "master", "commit": "1f4ad8bb72bdeb60975e98652636b991a9b7475d" }, "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, @@ -12,18 +12,19 @@ "kanagawa.nvim": { "branch": "master", "commit": "c19b9023842697ec92caf72cd3599f7dd7be4456" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, "lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "40301e1c74bc0946eece13edf2b1c561cc497491" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "faeb361507aa1ef1b0e5645781e2aa0d36a4aa84" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "f0cd12f7a8a310c58cecebddb6b219ffad1cfd0f" }, - "mason.nvim": { "branch": "main", "commit": "eabf6d347fdb75be360d4c0ced1145670a171453" }, + "mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "f053f09962819c1558cd93639aa80edf7c314c17" }, + "neodev.nvim": { "branch": "main", "commit": "b2881eeb395d2b268de5fe9b5e201a8f1816beb8" }, "nui.nvim": { "branch": "main", "commit": "c0c8e347ceac53030f5c1ece1c5a5b6a17a25b32" }, "nvim-cmp": { "branch": "main", "commit": "0b751f6beef40fd47375eaf53d3057e0bfa317e4" }, - "nvim-dap": { "branch": "master", "commit": "4048f37bc8b1a36fe1f5fde0df7d84aef71380e4" }, + "nvim-dap": { "branch": "master", "commit": "9d81c11fd185a131f81841e64941859305f6c42d" }, "nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" }, - "nvim-lspconfig": { "branch": "master", "commit": "37457f268af5cd6765e589b0dcd7cbd192d8da00" }, + "nvim-lspconfig": { "branch": "master", "commit": "d5d7412ff267b92a11a94e6559d5507c43670a52" }, "nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" }, - "nvim-treesitter": { "branch": "master", "commit": "9a746b4b6a1ef215943f07e6aa2ec35fb14097d4" }, - "nvim-web-devicons": { "branch": "master", "commit": "5de460ca7595806044eced31e3c36c159a493857" }, + "nvim-treesitter": { "branch": "master", "commit": "8b9f99660294dcd11d42572c84ee33a1e284f70d" }, + "nvim-web-devicons": { "branch": "master", "commit": "11eb26fc166742db8d1e8a6f5a7de9df37b09aae" }, "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" }, diff --git a/nvim/lua/keymaps.lua b/nvim/lua/keymaps.lua index bf885ed..1d9c610 100644 --- a/nvim/lua/keymaps.lua +++ b/nvim/lua/keymaps.lua @@ -3,27 +3,27 @@ local map, augroup, autocmd = U.keymap, U.augroup, U.autocmd local n, t, nv = map 'n', map 't', map {'n', 'v'} -n "mn" ":Explore ~/.config/nvim/" "Meta: open Neovim config" +n "mn" ":Explore ~/.config/nvim/" "Meta: open Neovim config" -n "ex" ":Explore" "Netrw: open" -n "hl" ":nohl" "Hide highlights" +n "ex" ":Explore" "Netrw: open" +n "hl" ":nohl" "Hide highlights" -n "j" "gj" "Move: down by line" -n "k" "gk" "Move: up by line" +n "j" "gj" "Move: down by line" +n "k" "gk" "Move: up by line" -n "bn" ":bn" "Buffer: next" -n "bp" ":bp" "Buffer: previous" -n "bd" ":bd" "Buffer: delete" +n "bn" ":bn" "Buffer: next" +n "bp" ":bp" "Buffer: previous" +n "bd" ":bd" "Buffer: delete" -t "" [[]] "Exit from terminal mode" +t "" [[]] "Exit from terminal mode" -n "" "h" "Window: move left" -n "" "j" "Window: move down" -n "" "k" "Window: move up" -n "" "l" "Window: move right" +n "" "h" "Window: move left" +n "" "j" "Window: move down" +n "" "k" "Window: move up" +n "" "l" "Window: move right" --- Diagnostic -n "de" (vim.diagnostic.open_float) "Diagnostic: open float" +-- Diagnostics +n "e" (vim.diagnostic.open_float) "Open error diagnostics" n "[d" (vim.diagnostic.goto_prev) "Previous diagnostic message" n "]d" (vim.diagnostic.goto_next) "Next diagnostic message" n "dl" (vim.diagnostic.setloclist) "Diagnostic: list messages" diff --git a/nvim/lua/options.lua b/nvim/lua/options.lua index 938eb4b..65c1725 100644 --- a/nvim/lua/options.lua +++ b/nvim/lua/options.lua @@ -39,14 +39,11 @@ autocmd "BufWritePre" {} (function() end) -- Additional filetypes -vim.filetype.add({ +vim.filetype.add { extension = { - mdx = "mdx", - typ = "typst", - purs = "purescript", + mdx = "mdx", + typ = "typst", + purs = "purescript", } -}) - --- Keymap -vim.keymap.set('n', "e", vim.diagnostic.open_float, {}) +} diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index d83c060..7fe456a 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -1,7 +1,8 @@ -local U = require("utility") -local n = U.keymap 'n' +local U = require "utility" +local n = U.keymap "n" +---@type LazySpec return { -- Editor theme @@ -21,8 +22,8 @@ return { "nvim-tree/nvim-web-devicons", }, config = function() - local lualine = require("lualine") - lualine.setup({}) + local lualine = require "lualine" + lualine.setup {} end }, @@ -32,13 +33,16 @@ return { branch = "0.1.x", dependencies = { "nvim-lua/plenary.nvim", - {"nvim-telescope/telescope-fzf-native.nvim", build = "make"} + { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } }, config = function() local telescope = require "telescope" local builtin = require "telescope.builtin" local ext = telescope.extensions - telescope.setup({ + + telescope.load_extension "fzf" + telescope.load_extension "notify" + telescope.setup { extensions = { fzf = { fuzzy = true, @@ -47,9 +51,8 @@ return { case_mode = "smart_case", } } - }) - telescope.load_extension("fzf") - telescope.load_extension("notify") + } + n "ff" (builtin.find_files) "Telescope: find files" n "fb" (builtin.buffers) "Telescope: find buffers" n "fg" (builtin.live_grep) "Telescope: grep content" @@ -90,13 +93,13 @@ return { -- Bufferline { - 'akinsho/bufferline.nvim', + "akinsho/bufferline.nvim", version = "*", dependencies = { - 'nvim-tree/nvim-web-devicons' + "nvim-tree/nvim-web-devicons" }, config = function() - local config = require("bufferline") + local config = require "bufferline" config.setup() end }, @@ -114,15 +117,17 @@ return { { "lewis6991/gitsigns.nvim", config = function() - local gitsigns = require("gitsigns") - gitsigns.setup({}) + local gitsigns = require "gitsigns" + gitsigns.setup() end, }, { "andweeb/presence.nvim", config = function() - require("presence").setup { + local presence = require "presence" + + presence.setup { main_image = "file", show_time = false, buttons = false, @@ -135,9 +140,13 @@ return { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", config = function() - local configs = require("nvim-treesitter.configs"); - configs.setup({ - sync_install = false, + local config = require "nvim-treesitter.configs" + + config.setup { + modules = {}, + auto_install = false, + sync_install = false, + ignore_install = {}, ensure_installed = { -- nvim "vim", "vimdoc", "lua", @@ -168,11 +177,13 @@ return { indent = { enable = true, }, - }) + } end, init = function() - vim.treesitter.language.register("markdown", "mdx") - vim.treesitter.language.register("haskell", "purescript") + local lang = vim.treesitter.language + + lang.register("markdown", "mdx") + lang.register("haskell", "purescript") end, }, @@ -204,6 +215,7 @@ return { "mfussenegger/nvim-dap", config = function() local dap = require "dap" + n "b" (dap.toggle_breakpoint) "DAP: Toggle breakpoint" end, }, @@ -220,12 +232,12 @@ return { { "williamboman/mason.nvim", config = function() - local mason = require("mason") + local mason = require "mason" mason.setup() end, }, - -- Automatic language server install + -- Automatic LSP server setup for Mason { "williamboman/mason-lspconfig.nvim", dependencies = { @@ -233,8 +245,11 @@ return { "neovim/nvim-lspconfig", }, config = function() - local config = require("mason-lspconfig") - config.setup({ + local config = require "mason-lspconfig" + local lsp = require "lspconfig" + local cmp = require "cmp_nvim_lsp" + + config.setup { automatic_installation = true, -- NOTE -- Haskell: Use GHCup installation instead of hls @@ -252,25 +267,16 @@ return { "purescriptls", -- Purescript "ltex", -- Literate - LaTeX, Markdown, etc. }, - }) + } - local lspconfig = require("lspconfig") - local capabilities = require("cmp_nvim_lsp").default_capabilities() - config.setup_handlers({ + config.setup_handlers { function(server) - lspconfig[server].setup({ + lsp[server].setup({ single_file_support = true, - capabilities = capabilities, + capabilities = cmp.default_capabilities(), }) end, - ["lua_ls"] = function() - lspconfig.lua_ls.setup({ - single_file_support = true, - capabilities = capabilities, - settings = { Lua = { diagnostics = { globals = { "vim" } } } }, - }) - end, - }) + } end, }, @@ -282,16 +288,37 @@ return { "williamboman/mason.nvim", }, config = function() - local config = require("mason-nvim-dap") - config.setup({ + local config = require "mason-nvim-dap" + + config.setup { automatic_installation = true, ensure_installed = { - "codelldb", -- Rust + "codelldb", }, - }) + } end, }, + -- Tools for Neovim + { + "folke/neodev.nvim", + ft = "lua", + dependencies = { + "neovim/nvim-lspconfig", + }, + config = function() + local neodev = require "neodev" + local lsp = require "lspconfig" + + neodev.setup() + lsp.lua_ls.setup { + settings = { + Lua = { completion = { callSnippet = "Replace" } } + } + } + end + }, + -- Tools for Rust require "plugins.rust-tools" { "simrat39/rust-tools.nvim", @@ -302,7 +329,7 @@ return { require "plugins.haskell-tools" { "mrcjkb/haskell-tools.nvim", version = "^3", - ft = {"haskell", "lhaskell", "cabal", "cabalproject"}, + ft = { "haskell", "lhaskell", "cabal", "cabalproject" }, dependencies = { "nvim-lua/plenary.nvim", "nvim-telescope/telescope.nvim",