diff --git a/coc-settings.json b/coc-settings.json index b8b0f51..9c35c40 100644 --- a/coc-settings.json +++ b/coc-settings.json @@ -4,7 +4,7 @@ "suggest.floatEnable": true, "suggest.detailField": "preview", "suggest.maxPreviewWidth": 80, - "signature.enable": true, + "signature.enable": false, "signature.target": "float", "extensions": [ "coc-json", diff --git a/init.lua b/init.lua index 7c71a82..3d7b7a4 100644 --- a/init.lua +++ b/init.lua @@ -15,34 +15,98 @@ require("autocmds") -- ./lua/autocmds.lua require("diagnostics") -- ./lua/diagnostics.lua require('telescope_configuration') -- ./lua/telescope_configuration.lua +local function cyberdream() + require("cyberdream").setup({ + -- Set light or dark variant + variant = "default", -- use "light" for the light variant. Also accepts "auto" to set dark or light colors based on the current value of `vim.o.background` + -- Enable transparent background + transparent = true, + -- Reduce the overall saturation of colours for a more muted look + saturation = 1, -- accepts a value between 0 and 1. 0 will be fully desaturated (greyscale) and 1 will be the full color (default) + -- Enable italics comments + italic_comments = true, + -- Replace all fillchars with ' ' for the ultimate clean look + hide_fillchars = false, + -- Apply a modern borderless look to pickers like Telescope, Snacks Picker & Fzf-Lua + borderless_pickers = true, + -- Set terminal colors used in `:terminal` + terminal_colors = true, + -- Improve start up time by caching highlights. Generate cache with :CyberdreamBuildCache and clear with :CyberdreamClearCache + cache = false, + -- Override highlight groups with your own colour values + -- highlights = { + -- -- Highlight groups to override, adding new groups is also possible + -- -- See `:h highlight-groups` for a list of highlight groups or run `:hi` to see all groups and their current values + -- -- Example: + -- Comment = { fg = "#696969", bg = "NONE", italic = true }, + -- -- More examples can be found in `lua/cyberdream/extensions/*.lua` + -- }, + -- Override a highlight group entirely using the built-in colour palette + -- overrides = function(colors) -- NOTE: This function nullifies the `highlights` option + -- -- Example: + -- return { + -- Comment = { fg = colors.green, bg = "NONE", italic = true }, + -- ["@property"] = { fg = colors.magenta, bold = true }, + -- } + -- end, + -- Override colors + -- colors = { + -- -- For a list of colors see `lua/cyberdream/colours.lua` + -- -- Override colors for both light and dark variants + -- bg = "#000000", + -- green = "#00ff00", + -- -- If you want to override colors for light or dark variants only, use the following format: + -- dark = { + -- magenta = "#ff00ff", + -- fg = "#eeeeee", + -- }, + -- light = { + -- red = "#ff5c57", + -- cyan = "#5ef1ff", + -- }, + -- }, + -- Disable or enable colorscheme extensions + extensions = { + telescope = true, + notify = true, + mini = true, + treesitter = true, + -- More extensions can be found in `lua/cyberdream/extensions/*.lua` + } + }) +end + if host == "xps13" then - require('tokyonight').setup({ - style = "moon", -- "storm", "moon", "day", "night" - transparent = false, -- Enable transparent background - terminal_colors = true, -- Enable terminal colors - styles = { - comments = { italic = true }, -- Italic comments - keywords = { italic = true }, -- Italic keywords - functions = { bold = true }, -- Bold functions - variables = {}, -- No special style for variables - sidebars = "dark", -- Dark sidebars - floats = "dark", -- Dark floating windows - }, - }) + cyberdream() + -- require('tokyonight').setup({ + -- style = "moon", -- "storm", "moon", "day", "night" + -- transparent = false, -- Enable transparent background + -- terminal_colors = true, -- Enable terminal colors + -- styles = { + -- comments = { italic = true }, -- Italic comments + -- keywords = { italic = true }, -- Italic keywords + -- functions = { bold = true }, -- Bold functions + -- variables = {}, -- No special style for variables + -- sidebars = "dark", -- Dark sidebars + -- floats = "dark", -- Dark floating windows + -- }, + -- }) +-- }) elseif host == "Titan" then - require('tokyonight').setup({ - style = "storm", -- "storm", "moon", "day", "night" - transparent = false, -- Enable transparent background - terminal_colors = true, -- Enable terminal colors - styles = { - comments = { italic = true }, -- Italic comments - keywords = { italic = true }, -- Italic keywords - functions = { bold = true }, -- Bold functions - variables = {}, -- No special style for variables - sidebars = "dark", -- Dark sidebars - floats = "dark", -- Dark floating windows - }, - }) + cyberdream() + -- require('tokyonight').setup({ + -- style = "storm", -- "storm", "moon", "day", "night" + -- transparent = false, -- Enable transparent background + -- terminal_colors = true, -- Enable terminal colors + -- styles = { + -- comments = { italic = true }, -- Italic comments + -- keywords = { italic = true }, -- Italic keywords + -- functions = { bold = true }, -- Bold functions + -- variables = {}, -- No special style for variables + -- sidebars = "dark", -- Dark sidebars + -- floats = "dark", -- Dark floating windows + -- }, + -- }) end local function is_linux_console() @@ -55,10 +119,11 @@ local function want_truecolor() or ((vim.env.COLORTERM or ""):lower():find("truecolor") ~= nil) end + local function set_colorscheme() if want_truecolor() then vim.o.termguicolors = true - if not pcall(vim.cmd.colorscheme, "tokyonight") then + if not pcall(vim.cmd.colorscheme, "cyberdream") then pcall(vim.cmd.colorscheme, "habamax") end else @@ -92,7 +157,12 @@ vim.api.nvim_create_autocmd("VimEnter", { lualine_a = { "mode" }, lualine_b = { "branch" }, lualine_c = { { "filename", file_status = true, path = 1 } }, - lualine_x = { "encoding", "fileformat", "filetype" }, + lualine_x = { + "encoding", "fileformat", "filetype", + require("noice").api.statusline.mode.get, + cond = require("noice").api.statusline.mode.has, + color = { fg = "#ff9e64" }, + }, lualine_y = { "progress" }, lualine_z = { "location" }, }, @@ -100,7 +170,7 @@ vim.api.nvim_create_autocmd("VimEnter", { else lualine.setup({ options = { - theme = "tokyonight", + theme = "auto", icons_enabled = true, globalstatus = true, }, diff --git a/lua/completion.lua b/lua/completion.lua index 308001d..a20eec8 100644 --- a/lua/completion.lua +++ b/lua/completion.lua @@ -15,8 +15,21 @@ cmp.setup({ return vim_item end, }, + -- completion = { + -- completeopt = 'menu,menuone,noinsert', + -- }, + completion = { + completeopt = 'menu,menuone,noinsert', + }, + performance = { + max_view_entries = 10, + }, window = { - completion = cmp.config.window.bordered(), + completion = cmp.config.window.bordered({ + -- winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None", + col_offset = -3, + side_padding = 0, + }), documentation = cmp.config.window.bordered(), }, mapping = cmp.mapping.preset.insert({ @@ -88,50 +101,51 @@ cmp.setup.cmdline(":", { }), }) -local capabilities = require("cmp_nvim_lsp").default_capabilities() -require("lspconfig").clangd.setup({ - capabilities = capabilities, -}) -require("lspconfig").taplo.setup({ - capabilities = capabilities, -}) -require("lspconfig").marksman.setup({ - capabilities = capabilities, -}) -require("lspconfig").lua_ls.setup({ - capabilities = capabilities, -}) -require("lspconfig").rust_analyzer.setup({ - capabilities = capabilities, -}) -require("lspconfig").zls.setup({ - capabilities = capabilities, -}) -require("lspconfig").gopls.setup({ - capabilities = capabilities, - settings = { - gopls = { - analyses = { - unusedparams = true, - unusedwrite = true, - shadow = true, - }, - staticcheck = true, - usePlaceholders = true, - hints = { - assignVariableTypes = true, - compositeLiteralFields = true, - compositeLiteralTypes = true, - functionTypeParameters = true, - parameterNames = true, - rangeVariableTypes = true, - }, - }, - }, -}) -require("lspconfig").pyright.setup({ - capabilities = capabilities, -}) -require("lspconfig").nim_langserver.setup({ - capabilities = capabilities, -}) +-- LSP server configurations moved to lsp.lua to avoid duplicates +-- local capabilities = require("cmp_nvim_lsp").default_capabilities() +-- require("lspconfig").clangd.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").taplo.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").marksman.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").lua_ls.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").rust_analyzer.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").zls.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").gopls.setup({ +-- capabilities = capabilities, +-- settings = { +-- gopls = { +-- analyses = { +-- unusedparams = true, +-- unusedwrite = true, +-- shadow = true, +-- }, +-- staticcheck = true, +-- usePlaceholders = true, +-- hints = { +-- assignVariableTypes = true, +-- compositeLiteralFields = true, +-- compositeLiteralTypes = true, +-- functionTypeParameters = true, +-- parameterNames = true, +-- rangeVariableTypes = true, +-- }, +-- }, +-- }, +-- }) +-- require("lspconfig").pyright.setup({ +-- capabilities = capabilities, +-- }) +-- require("lspconfig").nim_langserver.setup({ +-- capabilities = capabilities, +-- }) diff --git a/lua/keymaps.lua b/lua/keymaps.lua index 0d542cb..5a69685 100644 --- a/lua/keymaps.lua +++ b/lua/keymaps.lua @@ -88,6 +88,7 @@ vim.keymap.set("n", "_", ":resize -5", { desc = "Decrease Window Height -- CTRL X Maps +vim.keymap.set("n", "", "", { desc = "Ctrl-X"}) vim.keymap.set("n", "", ":Pick buffers", { desc = "Buffer Picker"}) vim.keymap.set("n", "", ":Pick files", { desc = "File Picker"}) vim.keymap.set("n", "", ":Pick help", { desc = "Help Picker"}) @@ -100,6 +101,12 @@ vim.keymap.set("n", "v", "TWView", { desc = "View Tasks", nor vim.keymap.set("n", "u", "TWUpdateCurrent", { desc="Update Tasks", noremap = true, silent = true }) vim.keymap.set("n", "s", "TWSyncTasks", { desc = "Sync Tasks", noremap = true, silent = true }) vim.keymap.set("n", "", "TWToggle", { desc = "Toggle Taskwarrior", silent = true }) +vim.keymap.set("n", "", "", { desc = "Devdocs"}) +vim.keymap.set("n", "i", ":DevdocsInstall ", { desc = "Install Docset"}) +vim.keymap.set("n", "o", ":DevdocsOpen ", { desc = "Open Docs In Window"}) +vim.keymap.set("n", "f", ":DevdocsOpenFloat ", { desc = "Open Docs In Float"}) +vim.keymap.set("n", "t", "DevdocsToggle", { desc = "Toggle Float"}) + -- FN Keys -- vim.keymap.set("n", "", ":nohlsearch", { desc = "Clear Search Highlight"}) @@ -139,6 +146,9 @@ vim.keymap.set( "n", "lc", "", {desc = "Completions" }) vim.keymap.set( "n", "lch", "CocCommand document.toggleInlayHint", {desc = "Toggle Inline Hints" }) vim.keymap.set( "n", "lcs", "CocOutline", {desc = "Show Symbol Outline" }) vim.keymap.set( "n", "lcl", "CocCommand document.toggleCodeLens", {desc = "Show Code Lens" }) +vim.keymap.set( "n", "lo", "", {desc = "Overlays" }) +vim.keymap.set( "n", "lod", "Trouble dignostics", {desc = "Diagnostics" }) +vim.keymap.set( "n", "los", "Trouble symbols", {desc = "Symbols" }) -- Tag-like functionality using LSP vim.keymap.set( "n", "lt", "", {desc = "Tags" }) diff --git a/lua/lsp.lua b/lua/lsp.lua index 082028a..db6620f 100644 --- a/lua/lsp.lua +++ b/lua/lsp.lua @@ -1,11 +1,6 @@ local vim = vim --- vim.cmd [[ --- augroup LspCompletion --- autocmd! --- autocmd InsertEnter * setlocal omnifunc=v:lua.vim.lsp.omnifunc --- autocmd TextChangedI * if pumvisible() == 0 | silent! lua vim.fn.complete(vim.fn.col('.'), vim.fn["vim.lsp.omnifunc"]()) | endif --- augroup END --- ]] + +-- Enable LSP servers with proper configuration vim.lsp.enable('lua_ls') vim.lsp.enable('gopls', { settings = { @@ -29,30 +24,48 @@ vim.lsp.enable('gopls', { }, }) vim.lsp.enable('nim_langserver') + +-- Fix: Add proper configuration for pyright/basedpyright +-- For NixOS with basedpyright: +vim.lsp.enable('basedpyright', { + settings = { + basedpyright = { + analysis = { + typeCheckingMode = "basic", + autoSearchPaths = true, + useLibraryCodeForTypes = true, + diagnosticMode = "workspace", + }, + } + } +}) + + require("lsp_signature").setup({ debug = false, - bind = true, -- registers signature handler - doc_lines = 10, - max_height = 12, - max_width = function() return math.floor(vim.api.nvim_win_get_width(0) * 0.8) end, + bind = true, + doc_lines = 5, + max_height = 8, + max_width = function() return math.floor(vim.api.nvim_win_get_width(0) * 0.7) end, wrap = true, - floating_window = true, -- show the popup - floating_window_above_cur_line = true, + floating_window = true, + floating_window_above_cur_line = false, floating_window_off_x = 1, - floating_window_off_y = 0, - - -- IMPORTANT: don’t inline (you can change later if you want) - hint_enable = true, + floating_window_off_y = 1, + -- hint_enable = true, + hint_enable = false, hint_inline = function() return false end, - - hint_prefix = "🐼 ", + -- hint_prefix = "🐼 ", + hint_prefix = "", hint_scheme = "String", hi_parameter = "LspSignatureActiveParameter", handler_opts = { border = "rounded" }, - always_trigger = false, - extra_trigger_chars = { "(", "," }, -- good default - zindex = 200, + auto_close_after = 5, + extra_trigger_chars = { "(", "," }, + -- zindex = 200, + zindex = 50, padding = "", timer_interval = 200, }) + diff --git a/lua/options.lua b/lua/options.lua index 96bc697..9b5da85 100644 --- a/lua/options.lua +++ b/lua/options.lua @@ -15,6 +15,7 @@ vim.o.termguicolors = true vim.o.winborder = "rounded" vim.o.clipboard = "unnamedplus" vim.o.completeopt = "menuone" +vim.o.shell = "/usr/bin/env zsh" -- vim.o.completeopt = "menuone,noinsert,noselect" vim.o.cursorline = true diff --git a/lua/plugins.lua b/lua/plugins.lua index a9b5cc0..dc090f6 100644 --- a/lua/plugins.lua +++ b/lua/plugins.lua @@ -2,7 +2,8 @@ local vim = vim local host = vim.loop.os_gethostname() vim.pack.add({ - { src = "https://github.com/folke/tokyonight.nvim" }, + -- { src = "https://github.com/folke/tokyonight.nvim" }, + { src = "https://github.com/scottmckendry/cyberdream.nvim" }, { src = "https://github.com/nvim-tree/nvim-web-devicons" }, { src = "https://github.com/ibhagwan/fzf-lua" }, { src = "https://github.com/echasnovski/mini.pick" }, @@ -61,6 +62,8 @@ vim.pack.add({ { src = "https://github.com/coder/claudecode.nvim" }, { src = "https://github.com/yetone/avante.nvim" }, { src = "https://github.com/alaviss/nim.nvim" }, + { src = "https://github.com/glebzlat/arduino-nvim" }, + { src = "https://github.com/norcalli/nvim-colorizer.lua" }, }) if host == "xps13" then @@ -74,9 +77,63 @@ require('mini.surround').setup({}) require('mini.indentscope').setup({}) require('mini.tabline').setup({}) require('mini.fuzzy').setup({}) -require('lualine').setup({ options = { theme = 'tokyonight' } }) +-- require('lualine').setup({ options = { theme = 'tokyonight' } }) require('which-key').setup({}) -require('fzf-lua').setup({}) +require('fzf-lua').setup({ + winopts = { + height = 0.85, + width = 0.80, + row = 0.35, + col = 0.50, + border = 'rounded', + preview = { + border = 'border', + wrap = 'nowrap', + hidden = 'nohidden', + vertical = 'down:45%', + horizontal = 'right:60%', + layout = 'flex', + flip_columns = 120, + }, + }, + keymap = { + builtin = { + [""] = "toggle-help", + [""] = "toggle-fullscreen", + [""] = "toggle-preview-wrap", + [""] = "toggle-preview", + [""] = "toggle-preview-ccw", + [""] = "toggle-preview-cw", + [""] = "preview-page-down", + [""] = "preview-page-up", + [""] = "preview-page-reset", + }, + fzf = { + ["ctrl-z"] = "abort", + ["ctrl-u"] = "unix-line-discard", + ["ctrl-f"] = "half-page-down", + ["ctrl-b"] = "half-page-up", + ["ctrl-a"] = "beginning-of-line", + ["ctrl-e"] = "end-of-line", + ["alt-a"] = "toggle-all", + ["f3"] = "toggle-preview-wrap", + ["f4"] = "toggle-preview", + ["shift-down"] = "preview-page-down", + ["shift-up"] = "preview-page-up", + }, + }, + previewers = { + head = { + cmd = "head", + args = nil, + }, + git_diff = { + cmd_deleted = "git show HEAD --", + cmd_modified = "git diff HEAD", + cmd_untracked = "git diff --no-index /dev/null", + }, + }, +}) require('crates').setup({}) require('todo-comments').setup({ options = { @@ -125,20 +182,24 @@ require('goto-preview').setup({ default_mappings = true }) require('telescope').setup({}) require('nvim-devdocs').setup({}) -- require('noice').setup({ --- lsp = { --- override = { --- ["vim.lsp.util.convert_input_to_markdown_lines"] = true, --- ["vim.lsp.util.stylize_markdown"] = true, --- ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp --- }, --- }, --- presets = { --- bottom_search = true, -- use a classic bottom cmdline for search --- command_palette = true, -- position the cmdline and popupmenu together --- long_message_to_split = true, -- long messages will be sent to a split --- inc_rename = false, -- enables an input dialog for inc-rename.nvim --- lsp_doc_border = false, -- add a border to hover docs and signature help --- }, +-- lsp = { +-- override = { +-- ["vim.lsp.util.convert_input_to_markdown_lines"] = true, +-- ["vim.lsp.util.stylize_markdown"] = true, +-- ["cmp.entry.get_documentation"] = true, -- requires hrsh7th/nvim-cmp +-- }, +-- }, +-- presets = { +-- bottom_search = true, -- use a classic bottom cmdline for search +-- command_palette = true, -- position the cmdline and popupmenu together +-- long_message_to_split = true, -- long messages will be sent to a split +-- inc_rename = false, -- enables an input dialog for inc-rename.nvim +-- lsp_doc_border = false, -- add a border to hover docs and signature help +-- }, +-- routes = { +-- view = "notify", +-- filter = { event = "msg_showmode" }, +-- }, -- }) require("claudecode").setup({}) require('avante').setup({ @@ -170,3 +231,21 @@ require('avante').setup({ } } }) + +require('arduino-nvim').setup({ + default_fqbn = "esp32:esp32:esp32", + filetypes = {"arduino"} +}) +require('colorizer').setup({ + '*', +}, { + RGB = true, + RRGGBB = true, + names = true, + RRGGBBAA = true, + rgb_fn = true, + hsl_fn = true, + css = true, + css_fn = true, + mode = 'background', +})