From a9c4046bc2ae6e1dda413a382ed1704108270a9d Mon Sep 17 00:00:00 2001 From: Jordan Orelli Date: Mon, 9 Sep 2024 13:41:33 -0500 Subject: [PATCH] python configs i think --- nvim/after/ftplugin/python.lua | 10 +- nvim/after/ftplugin/rust.lua | 17 ++- nvim/after/plugin/signature_help.lua | 196 ++++++++++++++------------- nvim/after/plugin/telescope.lua | 2 + nvim/lua/etc/init.lua | 5 + nvim/lua/keys.lua | 2 + nvim/lua/plugins.lua | 2 +- 7 files changed, 131 insertions(+), 103 deletions(-) diff --git a/nvim/after/ftplugin/python.lua b/nvim/after/ftplugin/python.lua index 641507d..1acf1c1 100644 --- a/nvim/after/ftplugin/python.lua +++ b/nvim/after/ftplugin/python.lua @@ -3,13 +3,13 @@ local has_pyright = nil -- These are files that are typically located in the root directory of a Python -- project local root_files = { - 'pyproject.toml', + 'pyrightconfig.json', + '.git', 'setup.py', 'setup.cfg', 'requirements.txt', 'Pipfile', - 'pyrightconfig.json', - '.git', + 'pyproject.toml', } local buf = vim.api.nvim_get_current_buf() @@ -17,9 +17,11 @@ local buf = vim.api.nvim_get_current_buf() local root_dir = vim.fs.root(buf, root_files) local git_dir = vim.fs.root(buf, {'.git'}) +local pyright_cmd = {'pyright-langserver', '--stdio'} + local pyright = vim.lsp.start({ name = 'pyright', - cmd = {'pyright-langserver', '--stdio'}, + cmd = pyright_cmd, filetypes = { 'python' }, root_dir = root_dir, single_file_support = true, diff --git a/nvim/after/ftplugin/rust.lua b/nvim/after/ftplugin/rust.lua index 9d6e2f3..6b0281d 100644 --- a/nvim/after/ftplugin/rust.lua +++ b/nvim/after/ftplugin/rust.lua @@ -1,2 +1,15 @@ --- yay --- local rustup_home = os.getenv('RUSTUP_HOME') or util.path.join(user_home, '.rustup') +local etc = require("etc") + +local buf = vim.api.nvim_get_current_buf() +local rustup_dir = os.getenv('RUSTUP_HOME') or vim.env.HOME .. '.rustup' + +if etc.has_executable("rust-analyzer") then + local rust_analyzer = vim.lsp.start({ + name = 'rust-analyzer', + cmd = { 'rust-analyzer' }, + filetypes = { 'rust' }, + single_file_support = true, + root_dir = vim.fs.root(buf, {'Cargo.toml', '.git'}), + }) + vim.lsp.buf_attach_client(buf, rust_analyzer) +end diff --git a/nvim/after/plugin/signature_help.lua b/nvim/after/plugin/signature_help.lua index 2e9dff5..aee7ff0 100644 --- a/nvim/after/plugin/signature_help.lua +++ b/nvim/after/plugin/signature_help.lua @@ -1,130 +1,134 @@ -local signature = require("lsp_signature") +local signature, _ = pcall(function() + return require("lsp_signature") +end); -signature.setup({ - -- set to true to enable debug logging - debug = false, +if signature then + signature.setup({ + -- set to true to enable debug logging + debug = false, - -- log dir when debug is on - -- default is ~/.cache/nvim/lsp_signature.log - log_path = vim.fn.stdpath("cache") .. "/lsp_signature.log", + -- log dir when debug is on + -- default is ~/.cache/nvim/lsp_signature.log + log_path = vim.fn.stdpath("cache") .. "/lsp_signature.log", - -- show debug line number - verbose = false, + -- show debug line number + verbose = false, - -- This is mandatory, otherwise border config won't get registered. - -- If you want to hook lspsaga or other signature handler, pls set to false - bind = true, + -- This is mandatory, otherwise border config won't get registered. + -- If you want to hook lspsaga or other signature handler, pls set to false + bind = true, - -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated); - -- set to 0 if you DO NOT want any API comments be shown - -- This setting only take effect in insert mode, it does not affect signature help in normal - -- mode, 10 by default - doc_lines = 0, + -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated); + -- set to 0 if you DO NOT want any API comments be shown + -- This setting only take effect in insert mode, it does not affect signature help in normal + -- mode, 10 by default + doc_lines = 0, - -- max height of signature floating_window - max_height = 12, + -- max height of signature floating_window + max_height = 12, - -- max_width of signature floating_window, line will be wrapped if exceed max_width - -- the value need >= 40 - max_width = 80, + -- max_width of signature floating_window, line will be wrapped if exceed max_width + -- the value need >= 40 + max_width = 80, - -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long - wrap = true, + -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long + wrap = true, - -- show hint in a floating window, set to false for virtual text only mode - floating_window = true, + -- show hint in a floating window, set to false for virtual text only mode + floating_window = true, - -- try to place the floating above the current line when possible Note: - -- will set to true when fully tested, set to false will use whichever side has more space - -- this setting will be helpful if you do not want the PUM and floating win overlap - floating_window_above_cur_line = true, + -- try to place the floating above the current line when possible Note: + -- will set to true when fully tested, set to false will use whichever side has more space + -- this setting will be helpful if you do not want the PUM and floating win overlap + floating_window_above_cur_line = true, - -- adjust float windows x position. - -- can be either a number or function - floating_window_off_x = -8, + -- adjust float windows x position. + -- can be either a number or function + floating_window_off_x = 0, - -- adjust float windows y position. e.g -2 move window up 2 lines; 2 move down 2 lines - -- can be either number or function, see examples - floating_window_off_y = 14, + -- adjust float windows y position. e.g -2 move window up 2 lines; 2 move down 2 lines + -- can be either number or function, see examples + floating_window_off_y = 0, - -- close floating window after ms when laster parameter is entered - close_timeout = 4000, + -- close floating window after ms when laster parameter is entered + close_timeout = 4000, - -- set to true, the floating window will not auto-close until finish all parameters - fix_pos = false, + -- set to true, the floating window will not auto-close until finish all parameters + fix_pos = false, - -- virtual hint enable - hint_enable = true, + -- virtual hint enable + hint_enable = true, - -- Panda for parameter, NOTE: for the terminal not support emoji, might crash - -- or, provide a table with 3 icons - -- hint_prefix = { - -- above = "↙ ", -- when the hint is on the line above the current line - -- current = "← ", -- when the hint is on the same line - -- below = "↖ " -- when the hint is on the line below the current line - -- } - hint_prefix = "🐼 ", + -- Panda for parameter, NOTE: for the terminal not support emoji, might crash + -- or, provide a table with 3 icons + -- hint_prefix = { + -- above = "↙ ", -- when the hint is on the line above the current line + -- current = "← ", -- when the hint is on the same line + -- below = "↖ " -- when the hint is on the line below the current line + -- } + hint_prefix = "🐼 ", - hint_scheme = "String", + hint_scheme = "String", - -- should the hint be inline(nvim 0.10 only)? default false - -- return true | 'inline' to show hint inline, return 'eol' to show hint at end of line, return false to disable - -- return 'right_align' to display hint right aligned in the current line - hint_inline = function() return false end, + -- should the hint be inline(nvim 0.10 only)? default false + -- return true | 'inline' to show hint inline, return 'eol' to show hint at end of line, return false to disable + -- return 'right_align' to display hint right aligned in the current line + hint_inline = function() return false end, - -- how your parameter will be highlight - hi_parameter = "LspSignatureActiveParameter", + -- how your parameter will be highlight + hi_parameter = "LspSignatureActiveParameter", - handler_opts = { - -- double, rounded, single, shadow, none, or a table of borders - border = "rounded" - }, + handler_opts = { + -- double, rounded, single, shadow, none, or a table of borders + border = "rounded" + }, - -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58 - always_trigger = false, + -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58 + always_trigger = false, - -- autoclose signature float win after x sec, disabled if nil. - auto_close_after = nil, + -- autoclose signature float win after x sec, disabled if nil. + auto_close_after = nil, - -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} - extra_trigger_chars = {}, + -- Array of extra characters that will trigger signature completion, e.g., {"(", ","} + extra_trigger_chars = {}, - -- by default it will be on top of all floating windows, set to <= 50 send it to bottom - zindex = 200, + -- by default it will be on top of all floating windows, set to <= 50 send it to bottom + zindex = 200, - -- character to pad on left and right of signature can be ' ', or '|' etc - padding = '', + -- character to pad on left and right of signature can be ' ', or '|' etc + padding = '', - -- disabled by default, allow floating win transparent value 1~100 - transparency = nil, + -- disabled by default, allow floating win transparent value 1~100 + transparency = nil, - -- if you using shadow as border use this set the opacity - shadow_blend = 36, + -- if you using shadow as border use this set the opacity + shadow_blend = 36, - -- if you using shadow as border use this set the color e.g. 'Green' or '#121315' - shadow_guibg = 'Black', + -- if you using shadow as border use this set the color e.g. 'Green' or '#121315' + shadow_guibg = 'Black', - -- default timer check interval set to lower value if you want to reduce latency - timer_interval = 50, + -- default timer check interval set to lower value if you want to reduce latency + timer_interval = 50, - -- toggle signature on and off in insert mode, e.g. toggle_key = '' - toggle_key = nil, + -- toggle signature on and off in insert mode, e.g. toggle_key = '' + toggle_key = nil, - -- true: toggle floating_windows: true|false setting after toggle key pressed - -- false: floating_windows setup will not change, toggle_key will pop up signature helper, but signature - -- may not popup when typing depends on floating_window setting - toggle_key_flip_floatwin_setting = false, + -- true: toggle floating_windows: true|false setting after toggle key pressed + -- false: floating_windows setup will not change, toggle_key will pop up signature helper, but signature + -- may not popup when typing depends on floating_window setting + toggle_key_flip_floatwin_setting = false, - -- cycle to next signature, e.g. '' function overloading - select_signature_key = nil, + -- cycle to next signature, e.g. '' function overloading + select_signature_key = nil, - -- imap, use nvim_set_current_win to move cursor between current win and floating window - -- e.g. move_cursor_key = '', - -- once moved to floating window, you can use , to move cursor up and down - move_cursor_key = nil, + -- imap, use nvim_set_current_win to move cursor between current win and floating window + -- e.g. move_cursor_key = '', + -- once moved to floating window, you can use , to move cursor up and down + move_cursor_key = nil, - -- relate to move_cursor_key; the keymaps inside floating window - -- e.g. keymaps = { 'j', 'j' } this map j to j in floating window - -- and are default keymaps to move cursor up and down - keymaps = {} -}) + -- relate to move_cursor_key; the keymaps inside floating window + -- e.g. keymaps = { 'j', 'j' } this map j to j in floating window + -- and are default keymaps to move cursor up and down + keymaps = {} + }) +end diff --git a/nvim/after/plugin/telescope.lua b/nvim/after/plugin/telescope.lua index 4c62337..adef210 100644 --- a/nvim/after/plugin/telescope.lua +++ b/nvim/after/plugin/telescope.lua @@ -15,3 +15,5 @@ telescope.setup({ } }, }) + +-- builtin.lsp_references diff --git a/nvim/lua/etc/init.lua b/nvim/lua/etc/init.lua index 7834406..96e292d 100644 --- a/nvim/lua/etc/init.lua +++ b/nvim/lua/etc/init.lua @@ -1,6 +1,7 @@ local M = {} local telescope = require("telescope.builtin") +local path = require("etc.path") -- cache directory checks for great speed local work_tree_lookup_cache = {} @@ -28,4 +29,8 @@ M.project_files = function() end end +M.has_executable = function(exe_name) + return vim.fn.executable(exe_name) == 1 +end + return M diff --git a/nvim/lua/keys.lua b/nvim/lua/keys.lua index c8c1ea3..f95c57c 100644 --- a/nvim/lua/keys.lua +++ b/nvim/lua/keys.lua @@ -5,6 +5,8 @@ vim.keymap.set('n', '', telescope.diagnostics, {}) vim.keymap.set('n', 'o', telescope.buffers, {}) vim.keymap.set('n', '', vim.cmd.bnext, {}) vim.keymap.set('n', '', vim.cmd.bprev, {}) +-- vim.keymap.set('n', 'r', vim.lsp.buf.references, {}) +vim.keymap.set('n', 'r', telescope.lsp_references, {}) -- vim.keymap.set("v", "J", ":m '>+1gv=gv") -- vim.keymap.set("v", "K", ":m '>-2gv=gv") diff --git a/nvim/lua/plugins.lua b/nvim/lua/plugins.lua index fb93371..19f24db 100644 --- a/nvim/lua/plugins.lua +++ b/nvim/lua/plugins.lua @@ -52,7 +52,7 @@ function load_plugins(use) "lewis6991/gitsigns.nvim" } - use { "ray-x/lsp_signature.nvim" } + -- use { "ray-x/lsp_signature.nvim" } use { "ervandew/supertab" } -- a file browser