diff options
| author | talha <talha@talhaamir.xyz> | 2026-07-26 11:55:58 +0500 |
|---|---|---|
| committer | talha <talha@talhaamir.xyz> | 2026-07-26 11:55:58 +0500 |
| commit | 1c8503345693788660ac0a132b111ebeb08ed87f (patch) | |
| tree | f78456b136fef6ad77885ee518e3def2dcde1a6f | |
| parent | 70fe2441aa025243e29d47aabe1b6674c4e0ed71 (diff) | |
Updated config
| -rw-r--r-- | lazy-lock.json | 31 | ||||
| -rw-r--r-- | lsp/pyright.lua | 76 | ||||
| -rw-r--r-- | lua/talha/init.lua | 2 | ||||
| -rw-r--r-- | lua/talha/lazy.lua | 1 | ||||
| -rw-r--r-- | lua/talha/plugins/oil.lua | 24 | ||||
| -rw-r--r-- | lua/talha/plugins/telescope.lua | 38 | ||||
| -rw-r--r-- | lua/talha/plugins/treesitter.lua | 30 | ||||
| -rw-r--r-- | lua/talha/remap.lua | 13 | ||||
| -rw-r--r-- | lua/talha/set.lua | 4 |
9 files changed, 179 insertions, 40 deletions
diff --git a/lazy-lock.json b/lazy-lock.json index b2286c4..af271a6 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,21 +1,12 @@ { - "LuaSnip": { "branch": "master", "commit": "72eea98b1900013e0cb214f29b898c8d91564930" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, - "cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" }, - "harpoon": { "branch": "master", "commit": "ccae1b9bec717ae284906b0bf83d720e59d12b91" }, - "lazy.nvim": { "branch": "main", "commit": "3f13f080434ac942b150679223d54f5ca91e0d52" }, - "lsp-zero.nvim": { "branch": "v2.x", "commit": "9a686513eaaa13d737d0fec8956a18268ead8b29" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "f3658bfc667df6a0340194a015ac2f31c1e675e0" }, - "mason.nvim": { "branch": "main", "commit": "751b1fcbf3d3b783fcf8d48865264a9bcd8f9b10" }, - "neomake": { "branch": "master", "commit": "584f882b9f991245374e7e7d7d1f78bae90b7a35" }, - "nvim-cmp": { "branch": "main", "commit": "ce16de5665c766f39c271705b17fff06f7bcb84f" }, - "nvim-lspconfig": { "branch": "master", "commit": "ed8b8a15acc441aec669f97d75f2c1f2ac8c8aa5" }, - "nvim-treesitter": { "branch": "master", "commit": "c1d1b4084ef5239e2671f64d35962d184251aea4" }, - "plenary.nvim": { "branch": "master", "commit": "5129a3693c482fcbc5ab99a7706ffc4360b995a0" }, - "telescope.nvim": { "branch": "master", "commit": "776b509f80dd49d8205b9b0d94485568236d1192" }, - "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, - "vim-fugitive": { "branch": "master", "commit": "dac8e5c2d85926df92672bf2afb4fc48656d96c7" }, - "vim-gutentags": { "branch": "master", "commit": "aa47c5e29c37c52176c44e61c780032dfacef3dd" }, - "vscode.nvim": { "branch": "main", "commit": "d47aab1fbe423bf14275745684205dca08366277" } -}
\ No newline at end of file + "harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" }, + "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "mini.icons": { "branch": "main", "commit": "e56797f90192d81f1fda02e662fc3e8e3d775027" }, + "moonfly": { "branch": "master", "commit": "261664f92ed51cf0c077555b2d4b2530307eac17" }, + "nvim-treesitter": { "branch": "main", "commit": "8b3a191c015dd66a92d51a112ed96af0aac13b63" }, + "oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" }, + "plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" }, + "telescope.nvim": { "branch": "master", "commit": "5255aa27c422de944791318024167ad5d40aad20" }, + "vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" } +} diff --git a/lsp/pyright.lua b/lsp/pyright.lua new file mode 100644 index 0000000..6973622 --- /dev/null +++ b/lsp/pyright.lua @@ -0,0 +1,76 @@ +---@brief +--- +--- https://detachhead.github.io/basedpyright +--- +--- `basedpyright`, a static type checker and language server for python +--- +--- Tagged hints are disabled by default. See Pyright for more details. +--- Set `basedpyright.disableTaggedHints = false` to re-enable. + +local function set_python_path(command) + local path = command.args + local clients = vim.lsp.get_clients { + bufnr = vim.api.nvim_get_current_buf(), + name = 'basedpyright', + } + for _, client in ipairs(clients) do + if client.settings then + ---@diagnostic disable-next-line: param-type-mismatch + client.settings.python = vim.tbl_deep_extend('force', client.settings.python or {}, { pythonPath = path }) + else + client.config.settings = vim.tbl_deep_extend('force', client.config.settings, { python = { pythonPath = path } }) + end + client:notify('workspace/didChangeConfiguration', { settings = nil }) + end +end + +---@type vim.lsp.Config +return { + cmd = { 'basedpyright-langserver', '--stdio' }, + filetypes = { 'python' }, + root_markers = { + 'pyrightconfig.json', + 'pyproject.toml', + 'setup.py', + 'setup.cfg', + 'requirements.txt', + 'Pipfile', + '.git', + }, + ---@type lspconfig.settings.basedpyright + settings = { + basedpyright = { + analysis = { + autoSearchPaths = true, + diagnosticMode = 'openFilesOnly', + -- https://docs.basedpyright.com/latest/configuration/language-server-settings/ + -- Explicitly setting `basedpyright.analysis.useLibraryCodeForTypes` is **discouraged** by the official docs. + -- Because it will override per-project configurations like `pyproject.toml`. + -- If left unset, its default value is `true`, and it can be correctly overridden by project config files. + }, + disableTaggedHints = true, + }, + }, + on_attach = function(client, bufnr) + vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightOrganizeImports', function() + local params = { + command = 'basedpyright.organizeimports', + arguments = { vim.uri_from_bufnr(bufnr) }, + } + + -- Using client.request() directly because "basedpyright.organizeimports" is private + -- (not advertised via capabilities), which client:exec_cmd() refuses to call. + -- https://github.com/neovim/neovim/blob/c333d64663d3b6e0dd9aa440e433d346af4a3d81/runtime/lua/vim/lsp/client.lua#L1024-L1030 + ---@diagnostic disable-next-line: param-type-mismatch + client.request('workspace/executeCommand', params, nil, bufnr) + end, { + desc = 'Organize Imports', + }) + + vim.api.nvim_buf_create_user_command(bufnr, 'LspPyrightSetPythonPath', set_python_path, { + desc = 'Reconfigure basedpyright with the provided python path', + nargs = 1, + complete = 'file', + }) + end, +} diff --git a/lua/talha/init.lua b/lua/talha/init.lua index 7b2074b..eadef49 100644 --- a/lua/talha/init.lua +++ b/lua/talha/init.lua @@ -4,4 +4,4 @@ require("talha.remap") require("talha.set") require("talha.autocmds") -vim.lsp.enable('clangd') +vim.lsp.enable({ "clangd", "pyright" }) diff --git a/lua/talha/lazy.lua b/lua/talha/lazy.lua index 5eb32fe..6ca7073 100644 --- a/lua/talha/lazy.lua +++ b/lua/talha/lazy.lua @@ -18,5 +18,6 @@ vim.opt.rtp:prepend(lazypath) require("lazy").setup({ { "bluz71/vim-moonfly-colors", name = "moonfly", lazy = false, priority = 1000 }, { "nvim-lua/plenary.nvim" }, + { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make' }, { import = "talha.plugins" }, }) diff --git a/lua/talha/plugins/oil.lua b/lua/talha/plugins/oil.lua new file mode 100644 index 0000000..a7196fa --- /dev/null +++ b/lua/talha/plugins/oil.lua @@ -0,0 +1,24 @@ +return { + 'stevearc/oil.nvim', + dependencies = { { "nvim-mini/mini.icons", version = '*', + config = function() + require('mini.icons').setup() + end + } }, + -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations. + lazy = false, + config = function() + require("oil").setup({ + columns = { + "icon", + }, + view_options = { + show_hidden = true, + }, + keymaps = { + ["<A-l>"] = { "actions.select", mode = "n" }, + ["<A-h>"] = { "actions.parent", mode = "n" }, + } + }) + end +} diff --git a/lua/talha/plugins/telescope.lua b/lua/talha/plugins/telescope.lua index 8b3a54b..65bfae9 100644 --- a/lua/talha/plugins/telescope.lua +++ b/lua/talha/plugins/telescope.lua @@ -1,6 +1,6 @@ return { { - "nvim-telescope/telescope.nvim", version = "0.1.2", + "nvim-telescope/telescope.nvim", version = "*", dependencies = { "nvim-lua/plenary.nvim" }, config = function() local builtin = require('telescope.builtin') @@ -13,6 +13,40 @@ return { vim.keymap.set('n', '<leader>pb', builtin.buffers) vim.keymap.set('n', '<leader>ph', builtin.help_tags) vim.keymap.set('n', '<leader>mp', builtin.man_pages) - end + + + local actions = require('telescope.actions') + require("telescope").setup({ + defaults = { + mappings = { + i = { -- Insert mode mappings + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + ["<C-h>"] = actions.preview_scrolling_left, + ["<C-l>"] = actions.preview_scrolling_right, + ["<A-j>"] = actions.move_selection_next, + ["<A-k>"] = actions.move_selection_previous, + ["<A-u>"] = actions.results_scrolling_up, + ["<A-d>"] = actions.results_scrolling_down, + ["<A-h>"] = actions.results_scrolling_left, + ["<A-l>"] = actions.results_scrolling_right, + }, + n = { -- Normal mode mappings + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + ["<C-h>"] = actions.preview_scrolling_left, + ["<C-l>"] = actions.preview_scrolling_right, + ["<A-k>"] = actions.move_selection_previous, + ["<A-j>"] = actions.move_selection_next, + ["<A-u>"] = actions.results_scrolling_up, + ["<A-d>"] = actions.results_scrolling_down, + ["<A-h>"] = actions.results_scrolling_left, + ["<A-l>"] = actions.results_scrolling_right, + ["<C-[>"] = actions.close, + }, + }, + }, + }) + end } } diff --git a/lua/talha/plugins/treesitter.lua b/lua/talha/plugins/treesitter.lua index 53d3ca0..7cf6c38 100644 --- a/lua/talha/plugins/treesitter.lua +++ b/lua/talha/plugins/treesitter.lua @@ -1,22 +1,28 @@ return { { "nvim-treesitter/nvim-treesitter", + branch = "main", lazy = false, build = ":TSUpdate", config = function () - local configs = require("nvim-treesitter.configs") + local ts = require("nvim-treesitter") - configs.setup({ - ensure_installed = { - "c", "cpp", "python", - "vim", "vimdoc", "query", - }, - sync_install = false, - highlight = { - enable = true, - additional_vim_regex_highlighting = false, - }, - indent = { enable = true }, + -- Automatically install your specified parsers + ts.install({ + "c", "cpp", "python", + "vim", "vimdoc", "query" + }) + + -- Enable highlighting and indentation using Neovim's built-in APIs + vim.api.nvim_create_autocmd("FileType", { + pattern = { "*.yml", "*.sql", "Dockerfile*", "CMakeLists*", "*.py", "*.c", "*.cpp", "*.h", "*.hpp" }, + callback = function() + -- Replaces highlight = { enable = true } + vim.treesitter.start() + + -- Replaces indent = { enable = true } + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end, }) end } diff --git a/lua/talha/remap.lua b/lua/talha/remap.lua index ee80890..fd785a2 100644 --- a/lua/talha/remap.lua +++ b/lua/talha/remap.lua @@ -4,7 +4,7 @@ vim.keymap.set("n", "<A-[>", vim.cmd.tabp) vim.keymap.set("n", "<A-]>", vim.cmd.tabn) -- open project view with netrw -vim.keymap.set("n", "<leader>pv", vim.cmd.Ex) +vim.keymap.set("n", "<leader>pv", vim.cmd.Oil) -- file splitting vim.keymap.set("n", "<leader>vs", vim.cmd.vsplit) @@ -40,3 +40,14 @@ vim.keymap.set("n", "<A-n>", function() SafeCListNav(1) end) vim.keymap.set("n", "<A-p>", function() SafeCListNav(-1) end) -- open error list when there are errors vim.keymap.set("n", "<A-l>", vim.cmd.cw) + +---- builtin terminal +vim.keymap.set("n", "<leader>to", function() + vim.cmd.new() + vim.cmd.term() + vim.cmd.wincmd("J") + vim.api.nvim_win_set_height(0, 10) +end) + +vim.keymap.set("t", "<C-[>", [[<C-\><C-N>]]) + diff --git a/lua/talha/set.lua b/lua/talha/set.lua index a7888b3..c6e6485 100644 --- a/lua/talha/set.lua +++ b/lua/talha/set.lua @@ -37,7 +37,3 @@ if vim.fn.executable('rg') > 0 then op.grepprg = 'rg --vimgrep' end --- netrw settings -vim.g.netrw_keepdir = 1 -vim.g.netrw_banner = 0 -vim.g.netrw_altv = 1 |
