diff options
| -rw-r--r-- | .config/nvim/README.md | 6 | ||||
| -rw-r--r-- | .config/nvim/init.lua | 4 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/colorscheme.lua | 16 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/lsp.lua | 44 | ||||
| -rw-r--r-- | .config/nvim/lua/plugins/telescope.lua | 508 | ||||
| -rw-r--r-- | .config/nvim/lua/user/keys.lua | 11 | ||||
| -rw-r--r-- | .config/nvim/lua/user/mods.lua | 204 | ||||
| -rw-r--r-- | .config/nvim/lua/user/pack.lua | 27 |
8 files changed, 555 insertions, 265 deletions
diff --git a/.config/nvim/README.md b/.config/nvim/README.md index 630b8e5..2659734 100644 --- a/.config/nvim/README.md +++ b/.config/nvim/README.md @@ -1 +1,7 @@ ## Neovim + +#### TODOS: +- [ ] Markdown filetype plugin or autocommand to add two spaces each line. +- [ ] Markdown filetype plugin or autocommand to make backtick auto-correct properly. +- [ ] Check history or telescope history of last files edited or opened. + diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index bd05b8a..b3f7a93 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -31,7 +31,7 @@ -- Download nvim-linux64.tar.gz: --$ curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/download/nightly/nvim-linux64.tar.gz -- Extract: ---$ tar xzvf nvim-linux64.tar.gz +--$ tar xzvf nvim-linux64.tar.gz --install-dir=/bin -- Run: --$ ./nvim-linux64/bin/nvim @@ -75,7 +75,7 @@ local modules = { "plugins.quickfix", --"plugins.snippets", --"plugins.colorizer", - "plugins.prettier", + --"plugins.prettier", --"plugins.git", "plugins.lsp", "plugins.gitsigns", diff --git a/.config/nvim/lua/plugins/colorscheme.lua b/.config/nvim/lua/plugins/colorscheme.lua index 10f0432..14edbdf 100644 --- a/.config/nvim/lua/plugins/colorscheme.lua +++ b/.config/nvim/lua/plugins/colorscheme.lua @@ -1,11 +1,17 @@ -- Colorscheme -- Available colorschemes: -- [[ nightfly ayu onedark doom-one nvimgelion github_dark tokyonight ]] -local colorscheme = "tokyonight-night" -local status_ok, _ = pcall(vim.cmd, "colorscheme " .. colorscheme) + +-- Define default color scheme +local default_colorscheme = "tokyonight-night" +local fallback_colorscheme = "desert" + +-- Attempt to set the default color scheme +local status_ok, _ = pcall(vim.cmd, "colorscheme " .. default_colorscheme) + +-- If the default color scheme is not found, use the fallback color scheme if not status_ok then - vim.notify("colorscheme " .. colorscheme .. " not found!") - return + vim.cmd("colorscheme " .. fallback_colorscheme) end --local function MyHighlights() @@ -26,7 +32,7 @@ end vim.api.nvim_command("syntax on") -vim.api.nvim_command("highlight Normal guibg=none") +vim.api.nvim_command("highlight Normal guibg=NONE") vim.api.nvim_command("highlight NormalNC guibg=none") vim.api.nvim_command("highlight SignColumn guibg=none") --vim.api.nvim_command("highlight FoldColumn guibg=none") diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua index ffa7837..ba577bc 100644 --- a/.config/nvim/lua/plugins/lsp.lua +++ b/.config/nvim/lua/plugins/lsp.lua @@ -1,8 +1,8 @@ require('mason').setup() -local lspconfig = require 'lspconfig' -local mason_lspconfig = require 'mason-lspconfig' -local null_ls = require 'null-ls' ---local lsp_lines = require 'lsp_lines' +local lspconfig = require('lspconfig') +local mason_lspconfig = require('mason-lspconfig') +local null_ls = require('null-ls') +--local lsp_lines = require('lsp_lines') local keymap = vim.keymap local cmd = vim.cmd @@ -179,6 +179,26 @@ local servers = { }, }, }, + dartls = ({ + cmd = { "dart", "language-server", "--protocol=lsp" }, + filetypes = { "dart" }, + init_options = { + closingLabels = true, + flutterOutline = true, + onlyAnalyzeProjectsWithOpenFiles = true, + outline = true, + suggestFromUnimportedLibraries = true, + }, + -- root_dir = root_pattern("pubspec.yaml"), + settings = { + dart = { + completeFunctionCalls = true, + showTodos = true, + }, + }, + on_attach = function(client, bufnr) + end, + }), lua_ls = ({ on_attach = on_attach, capabilities = capabilities, @@ -226,6 +246,19 @@ mason_lspconfig.setup({ automatic_installation = true, }) +-- Linters/Formatters ensure installed +local registry = require("mason-registry") +for _, pkg_name in ipairs { "dart-debug-Adaptor", "stylua", "prettier", "prettierd" } do + local ok, pkg = pcall(registry.get_package, pkg_name) + if ok then + if not pkg:is_installed() then + pkg:install() + end + end +end + +require("lspconfig").dartls.setup {capabilities = capabilities,} + for server, config in pairs(servers) do if config.prefer_null_ls then if config.on_attach then @@ -307,14 +340,15 @@ null_ls.setup { builtins.formatting.isort, builtins.formatting.htmlbeautifier, -- null_ls.builtins.formatting.prettier, + builtins.formatting.prettierd, builtins.formatting.prettier.with({ filetypes = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "yaml", "markdown", "html", "css", "scss", "less", "graphql", "vue", "svelte" }, extra_args = { "--single-quote", "--tab-width 4", "--print-width 200" }, }), - builtins.formatting.prettierd, builtins.formatting.rustfmt, builtins.formatting.stylua, + builtins.formatting.dart_format, builtins.formatting.trim_whitespace, builtins.formatting.yapf, -- null_ls.builtins.formatting.black diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua index d6d7233..079f88b 100644 --- a/.config/nvim/lua/plugins/telescope.lua +++ b/.config/nvim/lua/plugins/telescope.lua @@ -9,9 +9,11 @@ local fb_actions = require("telescope").extensions.file_browser.actions --local action_state = require("telescope.actions.state") --local layout_actions = require("telescope.actions.layout") --local pickers = require("telescope.pickers") +local themes = require("telescope.themes") + require('telescope').setup({ - defaults = { + defaults = { vimgrep_arguments = { "rg", "--color=never", @@ -32,12 +34,13 @@ require('telescope').setup({ --path_display = { "smart" }, file_ignore_patterns = { "packer_compiled.lua", + "zcompdump", "%.DS_Store", "%.git/", "%.spl", --"%.log", "%[No Name%]", -- new files / sometimes folders (netrw) - "/$", -- ignore folders (netrw) + "/$", -- ignore folders (netrw) "node_modules", "%.png", "%.zip", @@ -49,112 +52,118 @@ require('telescope').setup({ "^music/", --"^node_modules/", --"^undodir/", - }, - mappings = { - i = { - ["<C-n>"] = actions.cycle_history_next, - ["<C-p>"] = actions.cycle_history_prev, - - ["<C-j>"] = actions.move_selection_next, - ["<C-k>"] = actions.move_selection_previous, - - --["<C-c>"] = actions.close, - ["<Esc>"] = actions.close, -- close w/ one esc - --["<Esc>"] = "close", -- close w/ one esc - ["<?>"] = actions.which_key, -- keys from pressing <C-/> - - ["<Down>"] = actions.move_selection_next, - ["<Up>"] = actions.move_selection_previous, - - ["<CR>"] = actions.select_default, - ["<C-x>"] = actions.select_horizontal, - ["<C-y>"] = actions.select_vertical, - ["<C-t>"] = actions.select_tab, - - ["<C-u>"] = actions.preview_scrolling_up, - ["<C-d>"] = actions.preview_scrolling_down, - - ["<PageUp>"] = actions.results_scrolling_up, - ["<PageDown>"] = actions.results_scrolling_down, - - ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, - ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, - ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, - ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, - ["<C-l>"] = actions.complete_tag, - ["<C-_>"] = actions.which_key, -- keys from pressing <C-/> - --["<C-o>"] = function(prompt_bufnr) - -- local selection = require("telescope.actions.state").get_selected_entry() - -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") - -- require("telescope.actions").close(prompt_bufnr) - -- -- Depending on what you want put `cd`, `lcd`, `tcd` - -- vim.cmd(string.format("silent lcd %s", dir)) - --end, - }, - - n = { - ["<esc>"] = actions.close, + }, + mappings = { + i = { + ["<C-n>"] = actions.cycle_history_next, + ["<C-p>"] = actions.cycle_history_prev, + + ["<C-j>"] = actions.move_selection_next, + ["<C-k>"] = actions.move_selection_previous, + + --["<C-c>"] = actions.close, + ["<Esc>"] = actions.close, -- close w/ one esc + --["<Esc>"] = "close", -- close w/ one esc + ["<?>"] = actions.which_key, -- keys from pressing <C-/> + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-y>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, + ["<C-l>"] = actions.complete_tag, + ["<C-_>"] = actions.which_key, -- keys from pressing <C-/> + --["<C-o>"] = function(prompt_bufnr) + -- local selection = require("telescope.actions.state").get_selected_entry() + -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") + -- require("telescope.actions").close(prompt_bufnr) + -- -- Depending on what you want put `cd`, `lcd`, `tcd` + -- vim.cmd(string.format("silent lcd %s", dir)) + --end, + }, + n = { + --["cd"] = function(prompt_bufnr) + -- local selection = require("telescope.actions.state").get_selected_entry() + -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") + -- require("telescope.actions").close(prompt_bufnr) + -- -- Depending on what you want put `cd`, `lcd`, `tcd` + -- vim.cmd(string.format("silent lcd %s", dir)) + --end, + ["<esc>"] = actions.close, ["<q>"] = actions.close, - ["<CR>"] = actions.select_default, - ["<C-x>"] = actions.select_horizontal, - ["<C-y>"] = actions.select_vertical, - ["<C-t>"] = actions.select_tab, - - ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, - ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, - ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, - ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, - - ["j"] = actions.move_selection_next, - ["k"] = actions.move_selection_previous, - ["H"] = actions.move_to_top, - ["M"] = actions.move_to_middle, - ["L"] = actions.move_to_bottom, - - ["<Down>"] = actions.move_selection_next, - ["<Up>"] = actions.move_selection_previous, - ["gg"] = actions.move_to_top, - ["G"] = actions.move_to_bottom, - - ["<C-u>"] = actions.preview_scrolling_up, - ["<C-d>"] = actions.preview_scrolling_down, - - ["<PageUp>"] = actions.results_scrolling_up, - ["<PageDown>"] = actions.results_scrolling_down, - - ["?"] = actions.which_key, - --["<C-o>"] = function(prompt_bufnr) - -- local selection = require("telescope.actions.state").get_selected_entry() - -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") - -- require("telescope.actions").close(prompt_bufnr) - -- -- Depending on what you want put `cd`, `lcd`, `tcd` - -- vim.cmd(string.format("silent lcd %s", dir)) - --end, - }, - }, - }, - preview = { - filesize_limit = 3, - timeout = 250, + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-y>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, + + ["j"] = actions.move_selection_next, + ["k"] = actions.move_selection_previous, + ["H"] = actions.move_to_top, + ["M"] = actions.move_to_middle, + ["L"] = actions.move_to_bottom, + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + ["gg"] = actions.move_to_top, + ["G"] = actions.move_to_bottom, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["?"] = actions.which_key, + --["<C-o>"] = function(prompt_bufnr) + -- local selection = require("telescope.actions.state").get_selected_entry() + -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") + -- require("telescope.actions").close(prompt_bufnr) + -- -- Depending on what you want put `cd`, `lcd`, `tcd` + -- vim.cmd(string.format("silent lcd %s", dir)) + --end, + }, + }, + }, + preview = { + filesize_limit = 3, + timeout = 250, + }, + selection_strategy = "reset", + sorting_strategy = "ascending", + scroll_strategy = "limit", + color_devicons = true, + layout_strategy = 'horizontal', + layout_config = { + horizontal = { + height = 0.95, + preview_cutoff = 70, + width = 0.92, + preview_width = { 0.55, max = 50 } + }, + bottom_pane = { + height = 12, + preview_cutoff = 70, + prompt_position = "bottom", }, - selection_strategy = "reset", - sorting_strategy = "ascending", - scroll_strategy = "limit", - color_devicons = true, - layout_strategy = 'horizontal', - layout_config = { - horizontal = { - height = 0.95, - preview_cutoff = 70, - width = 0.92, - preview_width = {0.55, max = 50} - }, - bottom_pane = { - height = 12, - preview_cutoff = 70, - prompt_position = "bottom", - }, - }, + }, --pickers = { -- live_grep = { -- disable_coordinates = true, @@ -165,89 +174,102 @@ require('telescope').setup({ -- }, -- }, --}, - --pickers = { - --lsp_references = { - -- prompt_prefix='⬅️', - -- show_line=false, - -- trim_text=true, - -- include_declaration=false, - -- initial_mode = "normal", - --}, - --lsp_definitions = { - -- prompt_prefix='➡️', - -- show_line=false, - -- trim_text=true, - -- initial_mode = "normal", - --}, - --lsp_document_symbols = { - -- prompt_prefix='* ', - -- show_line = false, - --}, - --treesitter = { - -- prompt_prefix=' ', - -- show_line = false, - --}, - --find_files = { - -- cwd='%:p:h', - -- prompt_prefix=' ', - -- hidden = true, - -- follow = true, - --}, - --keymaps = { prompt_prefix='? ' }, - --oldfiles = { prompt_prefix=' ' }, - --highlights = { prompt_prefix=' ' }, - --git_files = { - -- prompt_prefix=' ', - -- show_untracked = true, - -- path_display = { "tail" }, - --}, - --buffers = { - -- prompt_prefix=' ', - -- ignore_current_buffer = true, - -- initial_mode = "normal", - -- sort_mru = true, - --}, - --live_grep = { - -- cwd='%:p:h', - -- disable_coordinates=true, - -- prompt_title='Search in Folder', - -- prompt_prefix=' ', - --}, - --spell_suggest = { - -- initial_mode = "normal", - -- prompt_prefix = "暈", - -- theme = "cursor", - -- layout_config = { cursor = { width = 0.3 } } - --}, - --colorscheme = { - -- enable_preview = true, - -- prompt_prefix = '', - -- results_title = '', - -- layout_strategy = "bottom_pane", - --}, - --}, - - extensions = { - file_browser = { - theme = "dropdown", - -- disables netrw and use telescope-file-browser in its place - hijack_netrw = true, - mappings = { - -- your custom insert mode mappings - ["i"] = { - ["<C-w>"] = function() - vim.cmd("normal vbd") - end, + --pickers = { + -- live_grep = { + -- mappings = { + -- i = { + -- ["<C-f>"] = ts_select_dir_for_grep, + -- }, + -- n = { + -- ["<C-f>"] = ts_select_dir_for_grep, + -- }, + -- }, + -- }, + --}, + --pickers = { + --lsp_references = { + -- prompt_prefix='⬅️', + -- show_line=false, + -- trim_text=true, + -- include_declaration=false, + -- initial_mode = "normal", + --}, + --lsp_definitions = { + -- prompt_prefix='➡️', + -- show_line=false, + -- trim_text=true, + -- initial_mode = "normal", + --}, + --lsp_document_symbols = { + -- prompt_prefix='* ', + -- show_line = false, + --}, + --treesitter = { + -- prompt_prefix=' ', + -- show_line = false, + --}, + find_files = { + cwd = '%:p:h', + --cwd = vim.fn.getcwd(), + prompt_prefix = ' ', + hidden = true, + follow = true, + }, + --keymaps = { prompt_prefix='? ' }, + --oldfiles = { prompt_prefix=' ' }, + --highlights = { prompt_prefix=' ' }, + --git_files = { + -- prompt_prefix=' ', + -- show_untracked = true, + -- path_display = { "tail" }, + --}, + --buffers = { + -- prompt_prefix=' ', + -- ignore_current_buffer = true, + -- initial_mode = "normal", + -- sort_mru = true, + --}, + --live_grep = { + -- cwd='%:p:h', + -- disable_coordinates=true, + -- prompt_title='Search in Folder', + -- prompt_prefix=' ', + --}, + --spell_suggest = { + -- initial_mode = "normal", + -- prompt_prefix = "暈", + -- theme = "cursor", + -- layout_config = { cursor = { width = 0.3 } } + --}, + --colorscheme = { + -- enable_preview = true, + -- prompt_prefix = '', + -- results_title = '', + -- layout_strategy = "bottom_pane", + --}, + --}, + + extensions = { + file_browser = { + theme = "dropdown", + -- disables netrw and use telescope-file-browser in its place + hijack_netrw = true, + mappings = { + -- your custom insert mode mappings + ["i"] = { + ["<C-w>"] = function() + vim.cmd("normal vbd") + end, + --["<C-h>"] = fb_actions.goto_parent_dir, + }, + ["n"] = { + -- your custom normal mode mappings + ["N"] = fb_actions.create, --["<C-h>"] = fb_actions.goto_parent_dir, - }, - ["n"] = { - -- your custom normal mode mappings - ["N"] = fb_actions.create, - --["<C-h>"] = fb_actions.goto_parent_dir, - --["/"] = function() - -- vim.cmd("startinsert") - --end, - }, + --["/"] = function() + -- vim.cmd("startinsert") + --end, + }, }, }, }, @@ -266,6 +288,17 @@ require('telescope').load_extension('media_files') require('telescope').load_extension('notify') require('telescope').load_extension('dap') require("telescope").load_extension("session-lens") +require("telescope").load_extension("flutter") + +--M.curbuf = function(opts) +-- opts = opts +-- or themes.get_dropdown({ +-- previewer = false, +-- shorten_path = false, +-- border = true, +-- }) +-- require("telescope.builtin").current_buffer_fuzzy_find(opts) +--end function M.find_configs() require("telescope.builtin").find_files { @@ -285,8 +318,13 @@ function M.find_configs() "~/.config/bspwm", "~/.config/sxhkd", "~/.config/picom", - "~/.ssh", + "~/.config/polybar", "~/.bashrc", + "~/.ssh", + "~/.vim", + "~/.profile", + "~/.zprofile", + "~/README.md", }, -- cwd = "~/.config/nvim/", file_ignore_patterns = { @@ -297,6 +335,9 @@ function M.find_configs() --"^~/.config/tmux/plugins", "%.txt", ".git", + "autoload/plugged", + "plug.vim", + "zcompdump", }, layout_strategy = "horizontal", layout_config = { preview_width = 0.65, width = 0.75 }, @@ -378,22 +419,22 @@ end -------------------------------------------------------------------------------- local dropdown = require('telescope.themes').get_dropdown({ - hidden = true, - no_ignore = true, - previewer = false, - prompt_title = '', - preview_title = '', - results_title = '', - layout_config = { - --anchor = "S", - prompt_position = 'top' - }, + hidden = true, + no_ignore = true, + previewer = false, + prompt_title = '', + preview_title = '', + results_title = '', + layout_config = { + --anchor = "S", + prompt_position = 'top' + }, }) -- File browser always relative to buffer -local opts_file_browser = vim.tbl_extend('force', dropdown, { - path_display = { '%:p:h' }, -}) +--local opts_file_browser = vim.tbl_extend('force', dropdown, { +-- path_display = { '%:p:h' }, +--}) -- Set current folder as prompt title local with_title = function(opts, extra) @@ -413,37 +454,36 @@ local with_title = function(opts, extra) }, extra or {}) end -----vim.api.nvim_create_augroup('startup', { clear = true }) -----vim.api.nvim_command('augroup startup') -----vim.api.nvim_command('autocmd!') -----vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").startup()') -----vim.api.nvim_command('augroup END') --- --- ---local startup = function() --- -- Open file browser if argument is a folder --- local arg = vim.api.nvim_eval('argv(0)') --- if arg and (vim.fn.isdirectory(arg) ~= 0 or arg == "") then --- vim.defer_fn(function() --- require('telescope.builtin').find_files(with_title(dropdown)) ----- require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ ----- hidden = true, ----- results_title = '', ----- layout_config = { prompt_position = 'top' }, ----- })) --- end, 10) --- end ---end --- --- --- ----- Define the custom command startup/findhere ---vim.cmd('command! Startup lua require("plugins.telescope").startup()') ---vim.cmd('command! Findhere lua require("plugins.telescope").startup()') --- -----vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").startup()') --- ----- Merge the existing M table with the startup function table ---M = vim.tbl_extend('force', M, { startup = startup }) +--vim.api.nvim_create_augroup('findhere', { clear = true }) +--vim.api.nvim_command('augroup findhere') +--vim.api.nvim_command('autocmd!') +--vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").findhere()') +--vim.api.nvim_command('augroup END') + + +--local findhere = function() +function M.findhere() + -- Open file browser if argument is a folder + local arg = vim.api.nvim_eval('argv(0)') + if arg and (vim.fn.isdirectory(arg) ~= 0 or arg == "") then + vim.defer_fn(function() + require('telescope.builtin').find_files(with_title(dropdown)) +-- require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ +-- hidden = true, +-- results_title = '', +-- layout_config = { prompt_position = 'top' }, +-- })) + end, 10) + end +end + +-- Define the custom command findhere/startup +vim.cmd('command! Findhere lua require("plugins.telescope").findhere()') +--vim.cmd('command! Startup lua require("plugins.telescope").findhere()') + +--vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").findhere()') + +-- Merge the existing M table with the startup function table +--M = vim.tbl_extend('force', M, { findhere = findhere }) return M diff --git a/.config/nvim/lua/user/keys.lua b/.config/nvim/lua/user/keys.lua index e5e7099..a20b0ea 100644 --- a/.config/nvim/lua/user/keys.lua +++ b/.config/nvim/lua/user/keys.lua @@ -170,7 +170,8 @@ map("i", "<C-l>", "<Del>") map("n", "<leader><C-l>", "<Cmd>!clear<CR>") -- Change file to an executable -map("n", "<leader>x", ":!chmod +x %<CR>") +map("n", "<Leader>x", ":lua require('user.mods').Toggle_executable()<CR> | :echom ('Toggle executable')<CR> | :sl! | echo ('')<CR>") +--map("n", "<leader>x", ":!chmod +x %<CR>") -- Paste without replace clipboard map("v", "p", '"_dP') @@ -291,8 +292,8 @@ map("n", "<leader>gm", ":Gmove<Space>") --end -- Telescope -map("n", "<leader>ff", function() require("telescope.builtin").find_files { hidden = true, no_ignore = true } end) -- find all files -map("n", "<leader>fF", "<cmd>lua require('telescope.builtin').find_files()<cr>") -- find files with hidden option +map("n", "<leader>ff", function() require("telescope.builtin").find_files { hidden = true, no_ignore = false } end) -- find all files +--map("n", "<leader>fF", "<cmd>lua require('telescope.builtin').find_files()<cr>") -- find files with hidden option map("n", "<leader>fg", "<cmd>lua require('telescope.builtin').live_grep()<cr>") map("n", "<leader>fb", "<cmd>lua require('telescope.builtin').buffers()<cr>") map("n", "<leader>fh", "<cmd>lua require('telescope.builtin').help_tags()<cr>") @@ -310,6 +311,8 @@ map("n", "<leader>fs", [[<Cmd>lua require'plugins.telescope'.find_scripts()<CR>] map("n", "<leader>fw", [[<Cmd>lua require'plugins.telescope'.find_projects()<CR>]]) -- find projects map("n", "<leader>fm", "<cmd>lua require('telescope').extensions.media_files.media_files({})<cr>") -- find media files map("n", "<leader>fi", "<cmd>lua require('telescope').extensions.notify.notify({})<cr>") -- find notifications +--map("n", "<leader>f/", "<cmd>lua require('plugins.telescope').curbuf()<cr>") -- find files with hidden option +map("n", "<leader>fF", ":cd %:p:h<CR>:pwd<CR><cmd>lua require('user.mods').findFilesInCwd()<CR>", { noremap = true, silent = true, desc = "Find files in cwd" }) -- FZF map("n", "<leader>fz", "<cmd>lua require('fzf-lua').files()<CR>") @@ -396,7 +399,7 @@ map("n", "<leader>dq", function() require("nvim-dap-virtual-text").refresh() end, { desc = "Terminate Debug" }) map("n", "<leader>dc", function() - require("telescope").extensions.dap.commands() + require("telescope").extensions.dap.commands() end, { desc = "DAP-Telescope: Commands" }) --vim.keymap.set("n", "<leader>B", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>") --vim.keymap.set("v", "<leader>B", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>") diff --git a/.config/nvim/lua/user/mods.lua b/.config/nvim/lua/user/mods.lua index 725ca6e..f00621d 100644 --- a/.config/nvim/lua/user/mods.lua +++ b/.config/nvim/lua/user/mods.lua @@ -40,7 +40,8 @@ require("null-ls").setup({ buffer = bufnr, callback = function() -- on 0.8, you should use vim.lsp.buf.format({ bufnr = bufnr }) instead - vim.lsp.buf.formatting_seq_sync() + --vim.lsp.buf.formatting_seq_sync() + vim.lsp.buf.format({ bufnr = bufnr }) end, }) end @@ -157,6 +158,38 @@ end --autocmd User RooterChDir :sleep! | call LogTrigger(timer) | call ConfigureChDir() --]]) +function M.findFilesInCwd() + vim.cmd("let g:rooter_manual_only = 1") -- Toggle the rooter plugin + require("plugins.telescope").findhere() + vim.defer_fn(function() + vim.cmd("let g:rooter_manual_only = 0") -- Change back to automatic rooter + end, 100) +end +--function M.findFilesInCwd() +-- vim.cmd("let g:rooter_manual_only = 1") -- Toggle the rooter plugin +-- require("plugins.telescope").findhere() +-- --vim.cmd("let g:rooter_manual_only = 0") -- Change back to automatic rooter +--end + +-------------------------------------------------- + +-- Toggle the executable permission +function M.Toggle_executable() + local current_file = vim.fn.expand('%:p') + local executable = vim.fn.executable(current_file) == 1 + + if executable then + -- File is executable, unset the executable permission + vim.fn.system('chmod -x ' .. current_file) + --print(current_file .. ' is no longer executable.') + print("No longer executable") + else + -- File is not executable, set the executable permission + vim.fn.system('chmod +x ' .. current_file) + --print(current_file .. ' is now executable.') + print("Now executable") + end +end -------------------------------------------------- @@ -233,7 +266,7 @@ function M.update_tmux_status() file:close() if nvim_running then -- Neovim is running, update the mode file and refresh tmux - VI_MODE = "" -- Clear VI_MODE to show Neovim mode + VI_MODE = "" -- Clear VI_MODE to show Neovim mode vim.cmd("silent !tmux refresh-client -S") end ---- Force tmux to update the status @@ -253,14 +286,163 @@ vim.cmd([[ -- Add autocmd for <esc> -- Add autocmd to check when tmux switches panes/windows - --autocmd InsertLeave,InsertEnter * lua require("user.mods").update_tmux_status() - --autocmd BufEnter * lua require("user.mods").update_tmux_status() - --autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status() - - --autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status() - --autocmd VimResized * lua require("user.mods").update_tmux_status() - --autocmd FocusGained * lua require("user.mods").update_tmux_status() - --autocmd FocusLost * lua require("user.mods").update_tmux_status() - --autocmd CmdwinEnter,CmdwinLeave * lua require("user.mods").update_tmux_status() +--autocmd InsertLeave,InsertEnter * lua require("user.mods").update_tmux_status() +--autocmd BufEnter * lua require("user.mods").update_tmux_status() +--autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status() + +--autocmd WinEnter,WinLeave * lua require("user.mods").update_tmux_status() +--autocmd VimResized * lua require("user.mods").update_tmux_status() +--autocmd FocusGained * lua require("user.mods").update_tmux_status() +--autocmd FocusLost * lua require("user.mods").update_tmux_status() +--autocmd CmdwinEnter,CmdwinLeave * lua require("user.mods").update_tmux_status() -------------------------------------------------- + +-- function OpenEmulatorList() +-- local emulatorsBuffer = vim.api.nvim_create_buf(false, true) +-- vim.api.nvim_buf_set_lines(emulatorsBuffer, 0, 0, true, {"Some text"}) +-- vim.api.nvim_open_win( +-- emulatorsBuffer, +-- false, +-- { +-- relative='win', row=3, col=3, width=12, height=3 +-- } +-- ) +-- end +-- +-- vim.api.nvim_create_user_command('OpenEmulators', OpenEmulatorList, {}) + + + +--local api = vim.api +--local fn = vim.fn +--local cmd = vim.cmd +-- +--local function bufremove(opts) +-- local target_buf_id = api.nvim_get_current_buf() +-- +-- -- Do nothing if buffer is in modified state. +-- if not opts.force and api.nvim_buf_get_option(target_buf_id, 'modified') then +-- return false +-- end +-- +-- -- Hide target buffer from all windows. +-- vim.tbl_map(function(win_id) +-- win_id = win_id or 0 +-- +-- local current_buf_id = api.nvim_win_get_buf(win_id) +-- +-- api.nvim_win_call(win_id, function() +-- -- Try using alternate buffer +-- local alt_buf_id = fn.bufnr('#') +-- if alt_buf_id ~= current_buf_id and fn.buflisted(alt_buf_id) == 1 then +-- api.nvim_win_set_buf(win_id, alt_buf_id) +-- return +-- end +-- +-- -- Try using previous buffer +-- cmd('bprevious') +-- if current_buf_id ~= api.nvim_win_get_buf(win_id) then +-- return +-- end +-- +-- -- Create new listed scratch buffer +-- local new_buf = api.nvim_create_buf(true, true) +-- api.nvim_win_set_buf(win_id, new_buf) +-- end) +-- +-- return true +-- end, fn.win_findbuf(target_buf_id)) +-- +-- cmd(string.format('bdelete%s %d', opts.force and '!' or '', target_buf_id)) +--end +-- +---- Assign bufremove to a global variable +--_G.bufremove = bufremove + +--vim.cmd([[ +-- augroup NvimTreeDelete +-- autocmd! +-- autocmd FileType NvimTree lua require('user.mods').enew_on_delete() +-- augroup END +--]]) +-- +--function M.enew_on_delete() +-- if vim.bo.buftype == 'nofile' then +-- vim.cmd('enew') +-- end +--end + +-- Update Neovim +--function M.Update_neovim() +-- -- Run the commands to download and extract the latest version +-- os.execute("curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz") +-- os.execute("tar xzvf nvim-linux64.tar.gz") +-- -- Replace the existing Neovim installation with the new version +-- os.execute("rm -rf $HOME/.local/bin/nvim") +-- os.execute("mv nvim-linux64 $HOME/.local/bin/nvim") +-- +-- -- Clean up the downloaded file +-- os.execute("rm nvim-linux64.tar.gz") +-- +-- -- Print a message to indicate the update is complete +-- print("Neovim has been updated to the latest version.") +--end +-- +---- Bind a keymap to the update_neovim function (optional) +--vim.api.nvim_set_keymap('n', '<leader>u', '<cmd> lua require("user.mods").Update_neovim()<CR>', { noremap = true, silent = true }) + +-- Define a function to create a floating window and run the update process inside it +function M.Update_neovim() + -- Create a new floating window + local bufnr, winid = vim.api.nvim_create_buf(false, true) + vim.api.nvim_open_win(bufnr, true, { + relative = "editor", + width = 80, + height = 20, + row = 2, + col = 2, + style = "minimal", + border = "single", + }) + + -- Function to append a line to the buffer in the floating window + local function append_line(line) + vim.api.nvim_buf_set_option(bufnr, "modifiable", true) + vim.api.nvim_buf_set_lines(bufnr, -1, -1, false, { line }) + vim.api.nvim_buf_set_option(bufnr, "modifiable", false) + end + + -- Download the latest version of Neovim + append_line("Downloading the latest version of Neovim...") + os.execute( + "curl -L -o nvim-linux64.tar.gz https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz") + append_line("Download complete.") + + -- Extract the downloaded archive + append_line("Extracting the downloaded archive...") + os.execute("tar xzvf nvim-linux64.tar.gz") + append_line("Extraction complete.") + + -- Replace the existing Neovim installation with the new version + append_line("Replacing the existing Neovim installation...") + os.execute("rm -rf $HOME/nvim") + os.execute("mv nvim-linux64 $HOME/nvim") + append_line("Update complete.") + + -- Clean up the downloaded file + append_line("Cleaning up the downloaded file...") + os.execute("rm nvim-linux64.tar.gz") + append_line("Cleanup complete.") + + -- Close the floating window after a delay + vim.defer_fn(function() + vim.api.nvim_win_close(winid, true) + end, 5000) -- Adjust the delay as needed +end + +-- Bind a keymap to the update_neovim function (optional) +vim.api.nvim_set_keymap('n', '<leader>u', '<cmd> lua require("user.mods").Update_neovim()<CR>', + { noremap = true, silent = true }) + + return M diff --git a/.config/nvim/lua/user/pack.lua b/.config/nvim/lua/user/pack.lua index e416baf..d2fad3c 100644 --- a/.config/nvim/lua/user/pack.lua +++ b/.config/nvim/lua/user/pack.lua @@ -63,8 +63,8 @@ return packer.startup(function(use) -- lsp use("williamboman/mason.nvim") -- Package manager to install and manage LSP servers, DAP servers, linters and formatters - use("williamboman/mason-lspconfig.nvim") -- Bridges mason.nvim with nvim-lspconfig to help use them together use("neovim/nvim-lspconfig") -- Collection of LSP configs + use("williamboman/mason-lspconfig.nvim") -- Bridges mason.nvim with nvim-lspconfig to help use them together use({ "https://git.sr.ht/~whynothugo/lsp_lines.nvim", config = function() @@ -167,7 +167,7 @@ return packer.startup(function(use) use({ "tpope/vim-eunuch", cmd = { "Rename", "Delete" } }) -- Handy unix commands inside Vim (Rename, Move etc.) --use("tpope/vim-surround") -- --use("tpope/vim-obsession") -- - --use("tpope/vim-unimpaired") -- + use("tpope/vim-unimpaired") -- --use("vimpostor/vim-tpipeline") -- --use("nathom/filetype.nvim") -- use({ "myusuf3/numbers.vim", -- @@ -200,7 +200,11 @@ return packer.startup(function(use) "folke/trouble.nvim", requires = "nvim-tree/nvim-web-devicons", }) - use("airblade/vim-rooter") -- + use({ "airblade/vim-rooter", -- + --vim.cmd("let g:rooter_change_directory_for_non_project_files = ''"), + --vim.cmd("let g:rooter_change_directory_for_non_project_files = 'current'") + }) + --use("vim-test/vim-test") -- --use({ -- "rcarriga/vim-ultest", -- @@ -276,7 +280,7 @@ return packer.startup(function(use) }) use("rcarriga/nvim-notify") -- Notification plugin use("karb94/neoscroll.nvim") -- Faster/smooth scrolling - use("MunifTanjim/prettier.nvim") -- Prettier plugin for Neovim's built-in LSP client + --use("MunifTanjim/prettier.nvim") -- Prettier plugin for Neovim's built-in LSP client use({ 'norcalli/nvim-colorizer.lua', -- colorize hexa and rgb strings cmd = { 'ColorizerToggle', 'ColorizerAttachToBuffer' }, @@ -329,6 +333,21 @@ return packer.startup(function(use) end, }) use({ + "akinsho/flutter-tools.nvim", + requires = { + "nvim-lua/plenary.nvim", + "stevearc/dressing.nvim", -- optional for vim.ui.select + }, + config = function() + require('flutter-tools').setup({ + debugger = { + enabled = true, + run_via_dap = true, + }, + }) + end, + }) + use({ "iamcco/markdown-preview.nvim", -- Markdown Preview run = function() vim.fn["mkdp#util#install"]() end, }) |
