diff --git a/after/plugin/colors.lua b/after/plugin/colors.lua index 64bc395..eccafd9 100644 --- a/after/plugin/colors.lua +++ b/after/plugin/colors.lua @@ -1,39 +1,3 @@ -local palette = { - none = "NONE", - fg = "#E1E1E1", - bg = "#151515", - alt_bg = "#171717", - accent = "#202020", - white = "#E1E1E1", - gray = "#373737", - medium_gray = "#727272", - light_gray = "#AFAFAF", - blue = "#BAD7FF", - gray_blue = "#7E97AB", - medium_gray_blue = "#A2B5C1", - cyan = "#88afa2", - red = "#b46958", - green = "#90A959", - yellow = "#F4BF75", - orange = "#FFA557", - purple = "#AA749F", - magenta = "#AA759F", - cursor_fg = "#151515", - cursor_bg = "#D0D0D0", - sign_add = "#586935", - sign_change = "#51657B", - sign_delete = "#984936", - error = "#984936", - warning = "#ab8550", - info = "#ab8550", - hint = "#576f82", - neogit_light_green = "#2A2E19", - neogit_blue = "#1B1F27", - neogit_green = "#212513", - neogit_light_red = "#402020", - neogit_red = "#351D1D", -} - require("no-clown-fiesta").setup({ transparent = true, }) @@ -143,65 +107,4 @@ require('vscode').setup({ } }) -vim.cmd[[ -let s:base03 = [ '#151513', 233 ] -let s:base02 = [ '#202020', 236 ] -let s:base01 = [ '#373737', 239 ] -let s:base00 = [ '#727272', 242 ] -let s:base0 = [ '#808070', 244 ] -let s:base1 = [ '#949484', 246 ] -let s:base2 = [ '#a8a897', 248 ] -let s:base3 = [ '#E1E1E1', 253 ] -let s:yellow = [ '#F4BF75', 3 ] -let s:orange = [ '#FFA557', 216 ] -let s:red = [ '#B46958', 131 ] -let s:purple = [ '#AA749F', 181 ] -let s:blue = [ '#7E97AB', 109 ] -let s:cyan = [ '#BAD7FF', 23 ] -let s:green = [ '#90A959', 108 ] -let s:white = [ '#AFAFAF', 252 ] - -let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}} -let s:p.normal.left = [ [ s:base02, s:green ], [ s:base3, s:base01 ] ] -let s:p.normal.right = [ [ s:base02, s:base1 ], [ s:base2, s:base01 ] ] -let s:p.inactive.right = [ [ s:base02, s:base00 ], [ s:base0, s:base02 ] ] -let s:p.inactive.left = [ [ s:base0, s:base02 ], [ s:base00, s:base02 ] ] -let s:p.insert.left = [ [ s:base02, s:blue ], [ s:base3, s:base01 ] ] -let s:p.replace.left = [ [ s:base02, s:purple ], [ s:base3, s:base01 ] ] -let s:p.visual.left = [ [ s:base02, s:red ], [ s:base3, s:base01 ] ] -let s:p.normal.middle = [ [ s:base0, s:base02 ] ] -let s:p.inactive.middle = [ [ s:base00, s:base02 ] ] -let s:p.tabline.left = [ [ s:base3, s:base00 ] ] -let s:p.tabline.tabsel = [ [ s:base3, s:base02 ] ] -let s:p.tabline.middle = [ [ s:base01, s:base1 ] ] -let s:p.tabline.right = copy(s:p.normal.right) -let s:p.normal.error = [ [ s:red, s:base02 ] ] -let s:p.normal.warning = [ [ s:yellow, s:base01 ] ] - -let g:lightline#colorscheme#mycolors#palette = lightline#colorscheme#flatten(s:p) -let g:lightline = { - \ 'colorscheme': 'mycolors', - \ } - -" Don't need to see mode if lightline is installed -set noshowmode -]] - vim.cmd[[colorscheme no-clown-fiesta]] - --- My own color overrides -local hl = vim.api.nvim_set_hl -hl(0, 'TSConstant', { fg = palette.yellow }) -hl(0, 'EndOfBuffer', { fg = palette.medium_gray }) -hl(0, 'ErrorMsg', { fg = palette.yellow }) -hl(0, 'LineNr', { fg = palette.medium_gray }) -hl(0, 'MasonNormal', { bg = palette.gray }) -hl(0, 'NvimTreeCursorLine', { fg = palette.yellow }) -hl(0, 'NvimTreeEndOfBuffer', { fg = palette.medium_gray }) -hl(0, 'NvimTreeIndentMarker', { fg = palette.medium_gray }) -hl(0, 'NvimTreeFolderIcon', { fg = palette.yellow }) -hl(0, 'WhichKeyBorder', { fg = palette.medium_gray, bg = palette.accent }) -hl(0, 'WhichKeyDesc', { link = "function" }) -hl(0, 'WhichKey', { fg = palette.medium_gray_blue }) -hl(0, 'WhichKeyGroup', { fg = palette.gray_blue, bold = true }) - diff --git a/after/plugin/compile-mode.lua b/after/plugin/compile-mode.lua new file mode 100644 index 0000000..7eea44a --- /dev/null +++ b/after/plugin/compile-mode.lua @@ -0,0 +1,10 @@ +require("compile-mode") + +vim.g.compile_mode = { + beleia_setup = true +} + +vim.keymap.set("n", "cC", vim.cmd.Compile, {desc = "Compile"}) +vim.keymap.set("n", "cc", vim.cmd.Recompile, {desc = "Recompile"}) + + diff --git a/after/plugin/lsp.lua b/after/plugin/lsp.lua index 3c075d2..55a5413 100644 --- a/after/plugin/lsp.lua +++ b/after/plugin/lsp.lua @@ -21,6 +21,8 @@ lspconfig.lua_ls.setup({ }, }) +vim.g.zig_fmt_autosave = 0 + -- RUST -- Must run `rustup default stable` and then `rustup component add rust-analyzer` -- upon first install @@ -30,6 +32,30 @@ lspconfig.clangd.setup({ capabilities = lsp_capabilities, }) +lspconfig.gopls.setup({ + settings = { + gopls = { + analyses = { + unusedparams = true, + }, + staticcheck = true, + gofumpt = true, + }, + }, +}) + +lspconfig.pylsp.setup({ + settings = { + pylsp = { + pylint = { enabled = true, executable = "pylint" }, + }, + }, +}) + +vim.keymap.set("n", "gf", ":GoFmt", + { noremap = true, silent = true, desc = "Go Format" } +) + -- AUTOCOMPLETION local cmp = require('cmp') diff --git a/after/plugin/lualine.lua b/after/plugin/lualine.lua new file mode 100644 index 0000000..7c57699 --- /dev/null +++ b/after/plugin/lualine.lua @@ -0,0 +1,14 @@ +require("lualine").setup({ + sections = { + lualine_a = {'mode'}, + lualine_b = {'tabs', 'filename'}, + lualine_c = {'branch', 'diff', 'diagnostics'}, + lualine_x = {'encoding', 'filetype'}, + lualine_y = {'progress'}, + lualine_z = {'location'} + }, +}) + +vim.cmd[[set showtabline=0]] +vim.cmd[[set noshowmode]] + diff --git a/after/plugin/markdownpreview.lua b/after/plugin/markdownpreview.lua index a6f9c75..4b25bcb 100644 --- a/after/plugin/markdownpreview.lua +++ b/after/plugin/markdownpreview.lua @@ -39,7 +39,7 @@ let g:mkdp_open_ip = '' " valid: `/path/with\ space/xxx` " invalid: `/path/with\\ space/xxx` " default: '' -let g:mkdp_browser = 'thorium-browser' +let g:mkdp_browser = 'zen' " set to 1, echo preview page url in command line when open preview page " default is 0 diff --git a/after/plugin/possession.lua b/after/plugin/possession.lua new file mode 100644 index 0000000..e682788 --- /dev/null +++ b/after/plugin/possession.lua @@ -0,0 +1,9 @@ +require("possession").setup({}) + +require('telescope').load_extension('possession') +vim.keymap.set("n", "pp", ":Telescope possession list", + { desc = "List neovim sessions" }) + +vim.keymap.set("n", "ss", ":PossessionSave", + { desc = "List neovim sessions" }) + diff --git a/after/plugin/telescope.lua b/after/plugin/telescope.lua index 4f6234d..62cdf66 100644 --- a/after/plugin/telescope.lua +++ b/after/plugin/telescope.lua @@ -6,13 +6,12 @@ require("telescope").setup{ } } -local wk = require("which-key") - vim.keymap.set("n", "p", "", {desc = "Project"}) -vim.keymap.set("n", "pf", builtin.find_files, {desc = "Project find"}) +vim.keymap.set("n", "pf", ":Telescope find_files no_ignore=true ", {desc = "Project find"}) +vim.keymap.set("n", ".", builtin.find_files, {desc = "Project find (.gitignore)"}) vim.keymap.set("n", "ps", function () - builtin.grep_string({ search = vim.fn.input("Grep > ") }) + builtin.grep_string({ search = vim.fn.input("Grep > "), no_ignore = true }) end, { desc = "Project search" }) diff --git a/after/plugin/treesitter.lua b/after/plugin/treesitter.lua index 4bd5213..2dbaa74 100644 --- a/after/plugin/treesitter.lua +++ b/after/plugin/treesitter.lua @@ -2,6 +2,8 @@ require'nvim-treesitter.configs'.setup { ensure_installed = { "c", "css", + "glsl", + "go", "html", "java", "javascript", @@ -29,3 +31,10 @@ require'nvim-treesitter.configs'.setup { }, } +vim.api.nvim_create_autocmd({"BufRead", "BufNewFile"}, { + pattern = {"*.vert", "*.frag"}, + callback = function() + vim.bo.filetype = "glsl" + end, +}) + diff --git a/lua/andrew/lazy.lua b/lua/andrew/lazy.lua index d31952f..520a1b3 100644 --- a/lua/andrew/lazy.lua +++ b/lua/andrew/lazy.lua @@ -30,6 +30,17 @@ require("lazy").setup({ event = "VeryLazy", }, + -- Markdown preview + { + "iamcco/markdown-preview.nvim", + cmd = { 'MarkdownPreviewToggle', 'MarkdownPreview', 'MarkdownPreviewStop' }, + ft = { 'markdown' }, + build = function() + vim.cmd [[Lazy load markdown-preview.nvim]] + vim.fn['mkdp#util#install']() + end, + }, + -- Dashboard buffer { "goolord/alpha-nvim", @@ -37,6 +48,25 @@ require("lazy").setup({ dependencies = { 'nvim-tree/nvim-web-devicons' }, }, + -- Compile mode + { + "ej-shafran/compile-mode.nvim", + -- tag = "v5.*", + -- you can just use the latest version: + branch = "latest", + -- or the most up-to-date updates: + -- branch = "nightly", + dependencies = { + "nvim-lua/plenary.nvim", + { "m00qek/baleia.nvim", tag = "v1.3.0" }, + }, + config = function() + vim.g.compile_mode = { + baleia_setup = true, + } + end + }; + -- Zen mode "folke/zen-mode.nvim", @@ -75,10 +105,10 @@ require("lazy").setup({ -- See function signatures when typing them { - "ray-x/lsp_signature.nvim", - event = "VeryLazy", - opts = {}, - config = function(_, opts) require'lsp_signature'.setup(opts) end + -- "ray-x/lsp_signature.nvim", + -- event = "VeryLazy", + -- opts = {}, + -- config = function(_, opts) require'lsp_signature'.setup(opts) end }, -- Left-side file tree dispaly @@ -89,8 +119,15 @@ require("lazy").setup({ }, }, - -- Shows current mode on bottom of screen - "itchyny/lightline.vim", + { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + }, + + { + 'jedrzejboczar/possession.nvim', + requires = { 'nvim-lua/plenary.nvim' }, + }, -- LSP {'VonHeikemen/lsp-zero.nvim', branch = 'v4.x'}, diff --git a/lua/andrew/remap.lua b/lua/andrew/remap.lua index 9185372..2d9445f 100644 --- a/lua/andrew/remap.lua +++ b/lua/andrew/remap.lua @@ -10,13 +10,23 @@ vim.keymap.set("n", "J", "mzJ`z") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") +-- step through visual lines by default +vim.keymap.set("n", "j", "gj") +vim.keymap.set("n", "gj", "j") +vim.keymap.set("n", "k", "gk") +vim.keymap.set("n", "gk", "k") +vim.keymap.set("v", "j", "gj") +vim.keymap.set("v", "gj", "j") +vim.keymap.set("v", "k", "gk") +vim.keymap.set("v", "gk", "k") + -- easier escape back to normal mode vim.keymap.set("i", "", "") vim.keymap.set("n", "Q", "") -- universal find and replace -vim.keymap.set("n", "s", [[:%s/\<\>//gI]]) +vim.keymap.set("n", "r", [[:%s/\<\>//gI]]) -- moving highlighted text vim.keymap.set("v", "J", ":m '>+1gv=gv") @@ -87,3 +97,34 @@ vim.keymap.set("n", "hF", { noremap = true, silent = false, desc = "Describe face" } ) +local str = string.format + +for i = 1, 9 do + vim.keymap.set("n", str("", i), str("%sgt", i), { desc = str("Goto tab %s", i) }) + vim.keymap.set("t", str("", i), str("%sgt", i), { desc = str("Goto tab %s", i) }) +end + +vim.keymap.set("n", "", "tabnew", { desc = "Create a new tab" }) +vim.keymap.set("n", "", "tabnewtermi", { desc = "Create a new tab with a terminal" }) +vim.keymap.set("n", "", "tabclose", { desc = "Close current tab" }) +vim.keymap.set("n", "", "tablast", { desc = "Goto last tab" }) +vim.keymap.set("n", "", "tabnext", { desc = "Goto next tab" }) +vim.keymap.set("n", "", "tabprevious", { desc = "Goto prev tab" }) +vim.keymap.set("n", "", "tabm-", { desc = "Move tab to the left" }) +vim.keymap.set("n", "", "tabm+", { desc = "Move tab to the right" }) +vim.keymap.set("n", "", "tab split", { desc = "Clone window in new tab" }) + +vim.keymap.set("n", "", "termi", { desc = "Terminal" }) + +vim.api.nvim_create_autocmd("TabEnter", { + callback = function() + local bufnr = vim.api.nvim_get_current_buf() + local buftype = vim.api.nvim_buf_get_option(bufnr, "buftype") + + if buftype == "terminal" then + -- Enter Terminal-Job mode + vim.api.nvim_feedkeys("i", "n", false) + end + end, +}) + diff --git a/lua/andrew/set.lua b/lua/andrew/set.lua index 92f8bdb..4923e9f 100644 --- a/lua/andrew/set.lua +++ b/lua/andrew/set.lua @@ -21,6 +21,13 @@ autocmd("bufenter", { end, }) +-- You can then map it to a key or create a command: +vim.api.nvim_create_user_command('GoFmt', function() + local filename = vim.fn.expand('%') + vim.fn.system('gofmt -e -w ' .. filename) + vim.cmd('edit!') +end, {}) + vim.filetype.add({ extension = { typ = 'typst' @@ -39,6 +46,8 @@ vim.opt.signcolumn = "auto" vim.o.shell = "zsh" +vim.o.title = true + -- Do not map q to :q in man mode vim.g.no_man_maps = true;