summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lazy-lock.json31
-rw-r--r--lsp/pyright.lua76
-rw-r--r--lua/talha/init.lua2
-rw-r--r--lua/talha/lazy.lua1
-rw-r--r--lua/talha/plugins/oil.lua24
-rw-r--r--lua/talha/plugins/telescope.lua38
-rw-r--r--lua/talha/plugins/treesitter.lua30
-rw-r--r--lua/talha/remap.lua13
-rw-r--r--lua/talha/set.lua4
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