diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..139e939 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,6 @@ +column_width = 160 +line_endings = "Unix" +indent_type = "Spaces" +indent_width = 2 +quote_style = "AutoPreferSingle" +call_parentheses = "None" diff --git a/init.lua b/init.lua index b5e9df1..34441f0 100644 --- a/init.lua +++ b/init.lua @@ -1,29 +1,33 @@ require 'core.options' require 'core.keymaps' +require 'core.autocommands' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = 'https://github.com/folke/lazy.nvim.git' - local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } - if vim.v.shell_error ~= 0 then - error('Error cloning lazy.nvim:\n' .. out) - end + local lazyrepo = 'https://github.com/folke/lazy.nvim.git' + local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } + if vim.v.shell_error ~= 0 then + error('Error cloning lazy.nvim:\n' .. out) + end end vim.opt.rtp:prepend(lazypath) -require('lazy').setup({ +require('lazy').setup { + require 'plugins.alpha', require 'plugins.colorscheme', - require 'plugins.neotree', + require 'plugins.neo-tree', require 'plugins.bufferline', require 'plugins.lualine', require 'plugins.treesitter', require 'plugins.telescope', require 'plugins.lsp', + require 'plugins.dap', + require 'plugins.formatting', require 'plugins.autocompletion', require 'plugins.gitsigns', require 'plugins.indent-blankline', + require 'plugins.render-markdown', require 'plugins.misc', - require 'plugins.copilot' -}) +} diff --git a/lazy-lock.json b/lazy-lock.json index adf2772..2365159 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,38 +1,44 @@ { - "LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" }, + "LuaSnip": { "branch": "master", "commit": "e808bee352d1a6fcf902ca1a71cee76e60e24071" }, + "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, + "conform.nvim": { "branch": "master", "commit": "1a99fdc1d3aa9ccdf3021e67982a679a8c5c740c" }, "copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, - "fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" }, + "fidget.nvim": { "branch": "main", "commit": "d855eed8a06531a7e8fd0684889b2943f373c469" }, "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "gitsigns.nvim": { "branch": "main", "commit": "4baa13519c2168cc9a7890a3580c50226ed018fb" }, - "indent-blankline.nvim": { "branch": "master", "commit": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78" }, - "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, + "gitsigns.nvim": { "branch": "main", "commit": "863903631e676b33e8be2acb17512fdc1b80b4fb" }, + "indent-blankline.nvim": { "branch": "master", "commit": "e7a4442e055ec953311e77791546238d1eaae507" }, + "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, "lualine.nvim": { "branch": "master", "commit": "f4f791f67e70d378a754d02da068231d2352e5bc" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "f75e877f5266e87523eb5a18fcde2081820d087b" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "374c78d3ebb5c53f43ea6bd906b6587b5e899b9e" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "neo-tree.nvim": { "branch": "v3.x", "commit": "5d172e8315444dbc32867d1c7b04d8e7e68ec4e1" }, "nui.nvim": { "branch": "main", "commit": "53e907ffe5eedebdca1cd503b00aa8692068ca46" }, "nvim-autopairs": { "branch": "master", "commit": "3d02855468f94bf435db41b661b58ec4f48a06b7" }, - "nvim-cmp": { "branch": "main", "commit": "12509903a5723a876abd65953109f926f4634c30" }, + "nvim-cmp": { "branch": "main", "commit": "ae644feb7b67bf1ce4260c231d1d4300b19c6f30" }, "nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" }, - "nvim-lspconfig": { "branch": "master", "commit": "6c17f8656f667727b27f5f598463afedb7791b18" }, - "nvim-treesitter": { "branch": "master", "commit": "a840137349fcc35b5ad2c718a9b034b93012fa43" }, - "nvim-web-devicons": { "branch": "master", "commit": "402377242b04be3f4f0f3720bd952df86e946c30" }, + "nvim-dap": { "branch": "master", "commit": "52302f02fea3a490e55475de52fa4deb8af2eb11" }, + "nvim-dap-ui": { "branch": "master", "commit": "bc81f8d3440aede116f821114547a476b082b319" }, + "nvim-dap-virtual-text": { "branch": "master", "commit": "df66808cd78b5a97576bbaeee95ed5ca385a9750" }, + "nvim-lspconfig": { "branch": "master", "commit": "0678aa439b82965daf03679cd146e84f10e299c3" }, + "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, + "nvim-treesitter": { "branch": "master", "commit": "d1e1f17cea23f14cbe230635b9bb654a835f02d7" }, + "nvim-web-devicons": { "branch": "master", "commit": "56f17def81478e406e3a8ec4aa727558e79786f3" }, "nvim-window-picker": { "branch": "main", "commit": "0dfef64eaf063e1cd27983ab11a30e7bc5b74fac" }, - "plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, - "tokyonight.nvim": { "branch": "main", "commit": "dca4adba7dc5f09302a00b0e76078d54d82d2658" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "tokyonight.nvim": { "branch": "main", "commit": "2c85fad417170d4572ead7bf9fdd706057bd73d7" }, "vim-bbye": { "branch": "master", "commit": "25ef93ac5a87526111f43e5110675032dbcacf56" }, "vim-fugitive": { "branch": "master", "commit": "b068eaf1e6cbe35d1ac100d435cd7f7b74a5c87d" }, "vim-rhubarb": { "branch": "master", "commit": "386daa2e9d98e23e27ad089afcbe5c5a903e488d" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "which-key.nvim": { "branch": "main", "commit": "0e76a87ac51772569aec678dc74baa8e2a86100c" } + "which-key.nvim": { "branch": "main", "commit": "fb070344402cfc662299d9914f5546d840a22126" } } diff --git a/lua/core/autocommands.lua b/lua/core/autocommands.lua new file mode 100644 index 0000000..cd670fe --- /dev/null +++ b/lua/core/autocommands.lua @@ -0,0 +1,10 @@ +-- 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/plugins/alpha.lua b/lua/plugins/alpha.lua new file mode 100644 index 0000000..66f9570 --- /dev/null +++ b/lua/plugins/alpha.lua @@ -0,0 +1,26 @@ +return { + 'goolord/alpha-nvim', + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + + config = function() + local alpha = require 'alpha' + local dashboard = require 'alpha.themes.startify' + + dashboard.section.header.val = { + [[ ]], + [[  ]], + [[ ████ ██████ █████ ██ ]], + [[ ███████████ █████  ]], + [[ █████████ ███████████████████ ███ ███████████ ]], + [[ █████████ ███ █████████████ █████ ██████████████ ]], + [[ █████████ ██████████ █████████ █████ █████ ████ █████ ]], + [[ ███████████ ███ ███ █████████ █████ █████ ████ █████ ]], + [[ ██████ █████████████████████ ████ █████ █████ ████ ██████ ]], + [[ ]], + } + + alpha.setup(dashboard.opts) + end, +} diff --git a/lua/plugins/bufferline.lua b/lua/plugins/bufferline.lua index b7ccb30..daf33ba 100644 --- a/lua/plugins/bufferline.lua +++ b/lua/plugins/bufferline.lua @@ -11,8 +11,8 @@ return { themable = true, -- allows highlight groups to be overriden i.e. sets highlights as default numbers = 'none', -- | "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string, close_command = 'Bdelete! %d', -- can be a string | function, see "Mouse actions" - buffer_close_icon = '✗', - close_icon = '✗', + buffer_close_icon = '󰅖', + close_icon = ' ', path_components = 1, -- Show only the file name without the directory modified_icon = '●', left_trunc_marker = '', @@ -40,6 +40,9 @@ return { maximum_padding = 5, maximum_length = 15, sort_by = 'insert_at_end', + pick = { + alphabet = 'abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890', + }, }, highlights = { separator = { diff --git a/lua/plugins/colorscheme.lua b/lua/plugins/colorscheme.lua index 51ac5ca..bb3fec4 100644 --- a/lua/plugins/colorscheme.lua +++ b/lua/plugins/colorscheme.lua @@ -1,9 +1,9 @@ return { - 'folke/tokyonight.nvim', - lazy = false, - priority = 1000, - init = function() - vim.cmd.colorscheme 'tokyonight-night' - vim.cmd.hi 'Comment gui=none' - end, + 'folke/tokyonight.nvim', + lazy = false, + priority = 1000, + init = function() + vim.cmd.colorscheme 'tokyonight-night' + vim.cmd.hi 'Comment gui=none' + end, } diff --git a/lua/plugins/copilot.lua b/lua/plugins/copilot.lua deleted file mode 100644 index 1a80487..0000000 --- a/lua/plugins/copilot.lua +++ /dev/null @@ -1,3 +0,0 @@ -return { - 'github/copilot.vim', -} diff --git a/lua/plugins/dap.lua b/lua/plugins/dap.lua new file mode 100644 index 0000000..61578d5 --- /dev/null +++ b/lua/plugins/dap.lua @@ -0,0 +1,105 @@ +return { + { + 'mfussenegger/nvim-dap', + dependencies = { + 'rcarriga/nvim-dap-ui', + 'theHamsta/nvim-dap-virtual-text', + 'nvim-neotest/nvim-nio', + 'williamboman/mason.nvim', + }, + config = function() + local dap = require 'dap' + local ui = require 'dapui' + + require('dapui').setup() + require('nvim-dap-virtual-text').setup() + + dap.adapters.chrome = { + type = 'executable', + command = 'node', + args = { os.getenv 'HOME' .. '/.local/share/nvim/mason/packages/chrome-debug-adapter/out/src/chromeDebug.js' }, + } + + dap.configurations.javascriptreact = { + { + type = 'chrome', + request = 'launch', + name = 'Launch in Brave', + webRoot = '${workspaceFolder}', + runtimeExecutable = '/snap/bin/brave', + sourceMaps = true, + userDataDir = true, + url = function() + local co = coroutine.running() + return coroutine.create(function() + vim.ui.input({ + prompt = 'Enter URL: ', + default = 'http://localhost:3000', + }, function(url) + if url == nil or url == '' then + return + else + coroutine.resume(co, url) + end + end) + end) + end, + }, + } + dap.configurations.typescriptreact = { + { + type = 'chrome', + request = 'launch', + name = 'Launch in Brave', + webRoot = '${workspaceFolder}', + runtimeExecutable = '/snap/bin/brave', + sourceMaps = true, + userDataDir = true, + url = function() + local co = coroutine.running() + return coroutine.create(function() + vim.ui.input({ + prompt = 'Enter URL: ', + default = 'http://localhost:3000', + }, function(url) + if url == nil or url == '' then + return + else + coroutine.resume(co, url) + end + end) + end) + end, + }, + } + + vim.keymap.set('n', 'b', dap.toggle_breakpoint) + vim.keymap.set('n', 'gb', dap.run_to_cursor) + + -- Eval var under cursor + vim.keymap.set('n', '?', function() + require('dapui').eval(nil, { enter = true }) + end) + + vim.keymap.set('n', '', dap.continue) + vim.keymap.set('n', '', dap.step_into) + vim.keymap.set('n', '', dap.step_over) + vim.keymap.set('n', '', dap.step_out) + vim.keymap.set('n', '', dap.step_back) + vim.keymap.set('n', '', dap.restart) + + dap.listeners.before.attach.dapui_config = function() + ui.open() + end + dap.listeners.before.launch.dapui_config = function() + ui.open() + end + dap.listeners.before.event_terminated.dapui_config = function() + ui.close() + end + dap.listeners.before.event_exited.dapui_config = function() + ui.close() + end + end, + }, +} diff --git a/lua/plugins/formatting.lua b/lua/plugins/formatting.lua new file mode 100644 index 0000000..3611897 --- /dev/null +++ b/lua/plugins/formatting.lua @@ -0,0 +1,44 @@ +return { + 'stevearc/conform.nvim', + event = { 'BufWritePre' }, + cmd = { 'ConformInfo' }, + keys = { + { + 'f', + function() + require('conform').format { async = true, lsp_format = 'fallback' } + end, + mode = '', + desc = '[F]ormat buffer', + }, + }, + opts = { + notify_on_error = false, + -- format_on_save = function(bufnr) + -- -- Disable "format_on_save lsp_fallback" for languages that don't + -- -- have a well standardized coding style. You can add additional + -- -- languages here or re-enable it for the disabled ones. + -- local disable_filetypes = { c = true, cpp = true } + -- local lsp_format_opt + -- if disable_filetypes[vim.bo[bufnr].filetype] then + -- lsp_format_opt = 'never' + -- else + -- lsp_format_opt = 'fallback' + -- end + -- return { + -- timeout_ms = 500, + -- lsp_format = lsp_format_opt, + -- } + -- end, + formatters_by_ft = { + lua = { 'stylua' }, + -- Conform can also run multiple formatters sequentially + -- python = { "isort", "black" }, + -- + -- You can use 'stop_after_first' to run the first available formatter from the list + javascript = { 'prettierd', 'prettier', stop_after_first = true }, + html = { 'prettierd', 'prettier', stop_after_first = true }, + css = { 'prettierd', 'prettier', stop_after_first = true }, + }, + }, +} diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 1e72c4b..eb4e5c6 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -163,10 +163,9 @@ return { -- -- But for many setups, the LSP (`tsserver`) will work just fine ts_ls = {}, -- tsserver is deprecated - html = { filetypes = { 'html', 'twig', 'hbs' } }, + html = {}, cssls = {}, dockerls = {}, - sqlls = {}, jsonls = {}, yamlls = {}, gopls = {}, @@ -208,7 +207,8 @@ return { -- for you, so that they are available from within Neovim. local ensure_installed = vim.tbl_keys(servers or {}) vim.list_extend(ensure_installed, { - 'stylua', -- Used to format Lua code + 'stylua', + 'prettier', }) require('mason-tool-installer').setup { ensure_installed = ensure_installed } diff --git a/lua/plugins/misc.lua b/lua/plugins/misc.lua index ce55f12..fa59b84 100644 --- a/lua/plugins/misc.lua +++ b/lua/plugins/misc.lua @@ -37,4 +37,12 @@ return { require('colorizer').setup() end, }, + { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, + { + 'github/copilot.vim', + config = function() + vim.keymap.set('n', 'ec', ':Copilot enable', { desc = 'Enable Copilot', noremap = false, silent = true }) + vim.keymap.set('n', 'dc', ':Copilot disable', { desc = 'Disable Copilot', noremap = false, silent = true }) + end, + }, } diff --git a/lua/plugins/neotree.lua b/lua/plugins/neo-tree.lua similarity index 58% rename from lua/plugins/neotree.lua rename to lua/plugins/neo-tree.lua index eddec39..5947210 100644 --- a/lua/plugins/neotree.lua +++ b/lua/plugins/neo-tree.lua @@ -1,44 +1,44 @@ return { - "nvim-neo-tree/neo-tree.nvim", - branch = "v3.x", + '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", + 'nvim-lua/plenary.nvim', + 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended + 'MunifTanjim/nui.nvim', -- {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information { - "s1n7ax/nvim-window-picker", -- for open_with_window_picker keymaps - version = "2.*", + 's1n7ax/nvim-window-picker', -- for open_with_window_picker keymaps + version = '2.*', config = function() - require("window-picker").setup({ + require('window-picker').setup { filter_rules = { include_current_win = false, autoselect_one = true, -- filter using buffer options bo = { -- if the file type is one of following, the window will be ignored - filetype = { "neo-tree", "neo-tree-popup", "notify" }, + filetype = { 'neo-tree', 'neo-tree-popup', 'notify' }, -- if the buffer type is one of following, the window will be ignored - buftype = { "terminal", "quickfix" }, + buftype = { 'terminal', 'quickfix' }, }, }, - }) + } end, }, }, config = function() -- If you want icons for diagnostic errors, you'll need to define them somewhere: - vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" }) - vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" }) - vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" }) - vim.fn.sign_define("DiagnosticSignHint", { text = "󰌵", texthl = "DiagnosticSignHint" }) + vim.fn.sign_define('DiagnosticSignError', { text = ' ', texthl = 'DiagnosticSignError' }) + vim.fn.sign_define('DiagnosticSignWarn', { text = ' ', texthl = 'DiagnosticSignWarn' }) + vim.fn.sign_define('DiagnosticSignInfo', { text = ' ', texthl = 'DiagnosticSignInfo' }) + vim.fn.sign_define('DiagnosticSignHint', { text = '󰌵', texthl = 'DiagnosticSignHint' }) - require("neo-tree").setup({ + require('neo-tree').setup { close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab - popup_border_style = "rounded", + popup_border_style = 'rounded', enable_git_status = true, enable_diagnostics = true, - open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes + open_files_do_not_replace_types = { 'terminal', 'trouble', 'qf' }, -- when opening files, do not use windows containing these filetypes or buftypes open_files_using_relative_paths = false, sort_case_insensitive = false, -- used when sorting files and directories in the tree sort_function = nil, -- use a custom function for sorting files and directories in the tree @@ -58,23 +58,23 @@ return { padding = 1, -- extra padding on left hand side -- indent guides with_markers = true, - indent_marker = "│", - last_indent_marker = "└", - highlight = "NeoTreeIndentMarker", + indent_marker = '│', + last_indent_marker = '└', + highlight = 'NeoTreeIndentMarker', -- expander config, needed for nesting files with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders - expander_collapsed = "", - expander_expanded = "", - expander_highlight = "NeoTreeExpander", + expander_collapsed = '', + expander_expanded = '', + expander_highlight = 'NeoTreeExpander', }, icon = { - folder_closed = "", - folder_open = "", - folder_empty = "󰜌", + folder_closed = '', + folder_open = '', + folder_empty = '󰜌', provider = function(icon, node, state) -- default icon provider utilizes nvim-web-devicons if available - if node.type == "file" or node.type == "terminal" then - local success, web_devicons = pcall(require, "nvim-web-devicons") - local name = node.type == "terminal" and "terminal" or node.name + if node.type == 'file' or node.type == 'terminal' then + local success, web_devicons = pcall(require, 'nvim-web-devicons') + local name = node.type == 'terminal' and 'terminal' or node.name if success then local devicon, hl = web_devicons.get_icon(name) icon.text = devicon or icon.text @@ -84,31 +84,31 @@ return { end, -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there -- then these will never be used. - default = "*", - highlight = "NeoTreeFileIcon", + default = '*', + highlight = 'NeoTreeFileIcon', }, modified = { - symbol = "[+]", - highlight = "NeoTreeModified", + symbol = '[+]', + highlight = 'NeoTreeModified', }, name = { trailing_slash = false, use_git_status_colors = true, - highlight = "NeoTreeFileName", + highlight = 'NeoTreeFileName', }, git_status = { symbols = { -- Change type - added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name - modified = "", -- or "", but this is redundant info if you use git_status_colors on the name - deleted = "✖", -- this can only be used in the git_status source - renamed = "󰁕", -- this can only be used in the git_status source + added = '', -- or "✚", but this is redundant info if you use git_status_colors on the name + modified = '', -- or "", but this is redundant info if you use git_status_colors on the name + deleted = '✖', -- this can only be used in the git_status source + renamed = '󰁕', -- this can only be used in the git_status source -- Status type - untracked = "", - ignored = "", - unstaged = "󰄱", - staged = "", - conflict = "", + untracked = '', + ignored = '', + unstaged = '󰄱', + staged = '', + conflict = '', }, }, -- If you don't want to use these columns, you can set `enabled = false` for each of them individually @@ -141,65 +141,65 @@ return { -- see `:h neo-tree-custom-commands-global` commands = {}, window = { - position = "left", + position = 'current', width = 40, mapping_options = { noremap = true, nowait = true, }, mappings = { - [""] = { - "toggle_node", + [''] = { + 'toggle_node', nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use }, - ["<2-LeftMouse>"] = "open", - [""] = "open", - [""] = "cancel", -- close preview or floating neo-tree window - ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } }, + ['<2-LeftMouse>'] = 'open', + [''] = 'open', + [''] = 'cancel', -- close preview or floating neo-tree window + ['P'] = { 'toggle_preview', config = { use_float = true, use_image_nvim = true } }, -- Read `# Preview Mode` for more information - ["l"] = "focus_preview", - ["S"] = "open_split", - ["s"] = "open_vsplit", + ['l'] = 'focus_preview', + ['S'] = 'open_split', + ['s'] = 'open_vsplit', -- ["S"] = "split_with_window_picker", -- ["s"] = "vsplit_with_window_picker", - ["t"] = "open_tabnew", + ['t'] = 'open_tabnew', -- [""] = "open_drop", -- ["t"] = "open_tab_drop", - ["w"] = "open_with_window_picker", + ['w'] = 'open_with_window_picker', --["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing - ["C"] = "close_node", + ['C'] = 'close_node', -- ['C'] = 'close_all_subnodes', - ["z"] = "close_all_nodes", + ['z'] = 'close_all_nodes', --["Z"] = "expand_all_nodes", - ["a"] = { - "add", + ['a'] = { + 'add', -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details -- some commands may take optional config options, see `:h neo-tree-mappings` for details config = { - show_path = "none", -- "none", "relative", "absolute" + show_path = 'none', -- "none", "relative", "absolute" }, }, - ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. - ["d"] = "delete", - ["r"] = "rename", - ["b"] = "rename_basename", - ["y"] = "copy_to_clipboard", - ["x"] = "cut_to_clipboard", - ["p"] = "paste_from_clipboard", - ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": + ['A'] = 'add_directory', -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. + ['d'] = 'delete', + ['r'] = 'rename', + ['b'] = 'rename_basename', + ['y'] = 'copy_to_clipboard', + ['x'] = 'cut_to_clipboard', + ['p'] = 'paste_from_clipboard', + ['c'] = 'copy', -- takes text input for destination, also accepts the optional config.show_path option like "add": -- ["c"] = { -- "copy", -- config = { -- show_path = "none" -- "none", "relative", "absolute" -- } --} - ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". - ["q"] = "close_window", - ["R"] = "refresh", - ["?"] = "show_help", - ["<"] = "prev_source", - [">"] = "next_source", - ["i"] = "show_file_details", + ['m'] = 'move', -- takes text input for destination, also accepts the optional config.show_path option like "add". + ['q'] = 'close_window', + ['R'] = 'refresh', + ['?'] = 'show_help', + ['<'] = 'prev_source', + ['>'] = 'next_source', + ['i'] = 'show_file_details', -- ["i"] = { -- "show_file_details", -- -- format strings of the timestamps shown for date created and last modified (see `:h os.date()`) @@ -246,42 +246,42 @@ return { leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` }, group_empty_dirs = false, -- when true, empty folders will be grouped together - hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree - -- in whatever position is specified in window.position - -- "open_current", -- netrw disabled, opening a directory opens within the - -- window like netrw would, regardless of window.position - -- "disabled", -- netrw left alone, neo-tree does not handle opening dirs + hijack_netrw_behavior = 'open_default', -- netrw disabled, opening a directory opens neo-tree + -- in whatever position is specified in window.position + -- "open_current", -- netrw disabled, opening a directory opens within the + -- window like netrw would, regardless of window.position + -- "disabled", -- netrw left alone, neo-tree does not handle opening dirs use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes -- instead of relying on nvim autocmd events. window = { mappings = { - [""] = "navigate_up", - ["."] = "set_root", - ["H"] = "toggle_hidden", - ["/"] = "fuzzy_finder", - ["D"] = "fuzzy_finder_directory", - ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm + [''] = 'navigate_up', + ['.'] = 'set_root', + ['H'] = 'toggle_hidden', + ['/'] = 'fuzzy_finder', + ['D'] = 'fuzzy_finder_directory', + ['#'] = 'fuzzy_sorter', -- fuzzy sorting using the fzy algorithm -- ["D"] = "fuzzy_sorter_directory", - ["f"] = "filter_on_submit", - [""] = "clear_filter", - ["[g"] = "prev_git_modified", - ["]g"] = "next_git_modified", - ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, - ["oc"] = { "order_by_created", nowait = false }, - ["od"] = { "order_by_diagnostics", nowait = false }, - ["og"] = { "order_by_git_status", nowait = false }, - ["om"] = { "order_by_modified", nowait = false }, - ["on"] = { "order_by_name", nowait = false }, - ["os"] = { "order_by_size", nowait = false }, - ["ot"] = { "order_by_type", nowait = false }, + ['f'] = 'filter_on_submit', + [''] = 'clear_filter', + ['[g'] = 'prev_git_modified', + [']g'] = 'next_git_modified', + ['o'] = { 'show_help', nowait = false, config = { title = 'Order by', prefix_key = 'o' } }, + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['og'] = { 'order_by_git_status', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, -- [''] = function(state) ... end, }, fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode - [""] = "move_cursor_down", - [""] = "move_cursor_down", - [""] = "move_cursor_up", - [""] = "move_cursor_up", - [""] = "close", + [''] = 'move_cursor_down', + [''] = 'move_cursor_down', + [''] = 'move_cursor_up', + [''] = 'move_cursor_up', + [''] = 'close', -- [''] = function(state, scroll_padding) ... end, }, }, @@ -298,43 +298,43 @@ return { show_unloaded = true, window = { mappings = { - ["bd"] = "buffer_delete", - [""] = "navigate_up", - ["."] = "set_root", - ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, - ["oc"] = { "order_by_created", nowait = false }, - ["od"] = { "order_by_diagnostics", nowait = false }, - ["om"] = { "order_by_modified", nowait = false }, - ["on"] = { "order_by_name", nowait = false }, - ["os"] = { "order_by_size", nowait = false }, - ["ot"] = { "order_by_type", nowait = false }, + ['bd'] = 'buffer_delete', + [''] = 'navigate_up', + ['.'] = 'set_root', + ['o'] = { 'show_help', nowait = false, config = { title = 'Order by', prefix_key = 'o' } }, + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, }, }, }, git_status = { window = { - position = "float", + position = 'float', mappings = { - ["A"] = "git_add_all", - ["gu"] = "git_unstage_file", - ["ga"] = "git_add_file", - ["gr"] = "git_revert_file", - ["gc"] = "git_commit", - ["gp"] = "git_push", - ["gg"] = "git_commit_and_push", - ["o"] = { "show_help", nowait = false, config = { title = "Order by", prefix_key = "o" } }, - ["oc"] = { "order_by_created", nowait = false }, - ["od"] = { "order_by_diagnostics", nowait = false }, - ["om"] = { "order_by_modified", nowait = false }, - ["on"] = { "order_by_name", nowait = false }, - ["os"] = { "order_by_size", nowait = false }, - ["ot"] = { "order_by_type", nowait = false }, + ['A'] = 'git_add_all', + ['gu'] = 'git_unstage_file', + ['ga'] = 'git_add_file', + ['gr'] = 'git_revert_file', + ['gc'] = 'git_commit', + ['gp'] = 'git_push', + ['gg'] = 'git_commit_and_push', + ['o'] = { 'show_help', nowait = false, config = { title = 'Order by', prefix_key = 'o' } }, + ['oc'] = { 'order_by_created', nowait = false }, + ['od'] = { 'order_by_diagnostics', nowait = false }, + ['om'] = { 'order_by_modified', nowait = false }, + ['on'] = { 'order_by_name', nowait = false }, + ['os'] = { 'order_by_size', nowait = false }, + ['ot'] = { 'order_by_type', nowait = false }, }, }, }, - }) + } - vim.cmd([[nnoremap \ :Neotree reveal]]) + vim.cmd [[nnoremap \ :Neotree reveal]] vim.keymap.set('n', 'ts', ':Neotree toggle position=left', { noremap = true, silent = true }) end, } diff --git a/lua/plugins/render-markdown.lua b/lua/plugins/render-markdown.lua new file mode 100644 index 0000000..f62a06c --- /dev/null +++ b/lua/plugins/render-markdown.lua @@ -0,0 +1,9 @@ +return { + 'MeanderingProgrammer/render-markdown.nvim', + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + ---@module 'render-markdown' + ---@type render.md.UserConfig + opts = {}, +}