From e90584aa57a820e8a18e70ff6e41cdb646193602 Mon Sep 17 00:00:00 2001 From: wooshdude Date: Mon, 9 Dec 2024 22:59:46 -0800 Subject: [PATCH] csharp settings --- nvim/.config/nvim/coc-settings.json | 17 +- nvim/.config/nvim/init.lua | 48 +- nvim/.config/nvim/init_1.lua | 1053 --------------------------- yabai/.config/yabai/yabairc | 1 + 4 files changed, 47 insertions(+), 1072 deletions(-) delete mode 100644 nvim/.config/nvim/init_1.lua diff --git a/nvim/.config/nvim/coc-settings.json b/nvim/.config/nvim/coc-settings.json index f22268d..3d4ea99 100644 --- a/nvim/.config/nvim/coc-settings.json +++ b/nvim/.config/nvim/coc-settings.json @@ -4,12 +4,18 @@ "host": "127.0.0.1", "filetypes": ["gdscript"], "port": 6005 + }, + "csharp-ls": { + "command": "csharp", + "filetypes": ["cs"], + "rootPatterns": ["*.csproj", ".vim/", ".git/", ".hg/"] } }, "coc.preferences.formatOnSave": true, "suggest.floatConfig": { "border": true, - "rounded": true + "rounded": true, + "maxHeight": 10 }, "semanticTokens.enable": true, "suggest.completionItemKindLabels": { @@ -33,16 +39,13 @@ "file": " ", "interface": "󱃖 " }, - "coc.source.OmniSharp.enable": true, - "omnisharp.trace.server": "information", - "omnisharp.debug.server": true, - "omnisharp.path": "/usr/local/bin/omnisharp", "diagnostic.enableMessage": "never", "diagnostic.enable": true, - "diagnostic.errorSign": "✗", - "diagnostic.warningSign": "⚠", + "diagnostic.errorSign": " ", + "diagnostic.warningSign": " ", "diagnostic.infoSign": "ℹ", "diagnostic.hintSign": "➤", "diagnostic.virtualText": true, + "diagnostic.virtualTextAlign": "below", "diagnostic.virtualTextCurrentLineOnly": true } diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index ba2a73d..2941fca 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -125,7 +125,7 @@ vim.keymap.set("n", "", "", { desc = "Move focus to the upper win -- Buffers vim.keymap.set("n", "tt", ":tabeditn", { desc = "Create a new tab", silent = true }) -vim.keymap.set("n", "te", ":BufferClose", { desc = "Close current tab", silent = true }) +vim.keymap.set("n", "te", ":BufferClose!", { desc = "Close current tab", silent = true }) vim.keymap.set("n", "", ":BufferNext", { desc = "Next tab", silent = true }) vim.keymap.set("n", "", ":BufferPrevious", { desc = "Previous tab", silent = true }) vim.keymap.set("n", "tl", ":BufferMoveNext", { desc = "Shift tab right", silent = true }) @@ -202,7 +202,7 @@ if vim.env.TMUX ~= nil then pattern = "*", callback = function() local current_file = vim.fn.expand("%:t") - local tmux_command = string.format("tmux rename-window '📄 nvim - %s'", current_file) + local tmux_command = string.format("tmux rename-window 'nvim'", current_file) vim.fn.system(tmux_command) end }) @@ -297,12 +297,6 @@ require("lazy").setup({ -- configuration here or empty for defaults }, }, - { - "OmniSharp/omnisharp-vim", - init = function() - vim.g.OmniSharp_server_use_net6 = 1 - end, - }, { "rmagatti/auto-session", lazy = false, @@ -352,13 +346,18 @@ require("lazy").setup({ }, { "romgrk/barbar.nvim", + config = function() + icons = { + button = "", + separator = { left = '', right = '' }, + } + + vim.g.barbar_auto_setup = false + end, dependencies = { "lewis6991/gitsigns.nvim", -- OPTIONAL: for git status "nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons }, - init = function() - vim.g.barbar_auto_setup = false - end, opts = { -- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default: -- animation = true, @@ -564,7 +563,32 @@ require("lazy").setup({ }, -- LSP Plugins - --{ "dense-analysis/ale" }, + { + "OmniSharp/omnisharp-vim", + config = function() + vim.g.OmniSharp_server_use_net6 = 1 + vim.g.OmniSharp_server_use_mono = 1 + vim.g.Omnisharp_highlighting = 3 + vim.g.OmniSharp_diagnostic_showid = 0 + vim.g.OmniSharp_diagnostic_overrides = { + CS8019 = { type = 'None' }, + } + end, + }, + { + "dense-analysis/ale", + config = function() + vim.g.ale_sign_column_always = 1 + vim.g.ale_sign_error = ' ' + vim.g.ale_sign_warning = ' ' + vim.b.ale_linters = { cs = { "OmniSharp" } } + vim.g.ale_linters_explicit = 1 + vim.g.ale_echo_msg_error_str = ' ' + vim.g.ale_echo_msg_warning_str = ' ' + vim.g.ale_cs_csc_assemblies = { ".mono" } + vim.g.ale_cs_mcsc_assemblies = { ".mono" } + end + }, { "neoclide/coc.nvim", branch = "release", diff --git a/nvim/.config/nvim/init_1.lua b/nvim/.config/nvim/init_1.lua deleted file mode 100644 index b87f999..0000000 --- a/nvim/.config/nvim/init_1.lua +++ /dev/null @@ -1,1053 +0,0 @@ --- Set as the leader key --- See `:help mapleader` --- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) -vim.g.mapleader = " " -vim.g.maplocalleader = " " -vim.opt.tabstop = 4 -vim.opt.softtabstop = 4 -vim.opt.shiftwidth = 4 - --- Set to true if you have a Nerd Font installed and selected in the terminal -vim.g.have_nerd_font = true - -local colorscheme = "catppuccin" - --- [[ Setting options ]] --- See `:help vim.opt` --- NOTE: You can change these options as you wish! --- For more options, you can see `:help option-list` - --- Make line numbers default -vim.opt.number = true --- You can also add relative line numbers, to help with jumping. --- Experiment for yourself to see if you like it! --- vim.opt.relativenumber = true - --- Enable mouse mode, can be useful for resizing splits for example! -vim.opt.mouse = "a" - --- Don't show the mode, since it's already in the status line -vim.opt.showmode = false - --- Sync clipboard between OS and Neovim. --- Schedule the setting after `UiEnter` because it can increase startup-time. --- Remove this option if you want your OS clipboard to remain independent. --- See `:help 'clipboard'` -vim.schedule(function() - vim.opt.clipboard = "unnamedplus" -end) - --- Enable break indent -vim.opt.breakindent = true - --- Save undo history -vim.opt.undofile = true - --- Case-insensitive searching UNLESS \C or one or more capital letters in the search term -vim.opt.ignorecase = true -vim.opt.smartcase = true - --- Keep signcolumn on by default -vim.opt.signcolumn = "yes" - --- Decrease update time -vim.opt.updatetime = 250 - --- Decrease mapped sequence wait time --- Displays which-key popup sooner -vim.opt.timeoutlen = 300 - --- Configure how new splits should be opened -vim.opt.splitright = true -vim.opt.splitbelow = true - --- Sets how neovim will display certain whitespace characters in the editor. --- See `:help 'list'` --- and `:help 'listchars'` -vim.opt.list = true -vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" } - --- Preview substitutions live, as you type! -vim.opt.inccommand = "split" - --- Show which line your cursor is on -vim.opt.cursorline = true - --- Minimal number of screen lines to keep above and below the cursor. -vim.opt.scrolloff = 10 --- [[ Basic Keymaps ]] --- See `:help vim.keymap.set()` - --- Clear highlights on search when pressing in normal mode --- See `:help hlsearch` -vim.keymap.set("n", "", "nohlsearch") - --- Diagnostic keymaps -vim.keymap.set("n", "q", vim.diagnostic.setloclist, { desc = "Open diagnostic [Q]uickfix list" }) - --- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier --- for people to discover. Otherwise, you normally need to press , which --- is not what someone will guess without a bit more experience. --- --- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping --- or just use to exit terminal mode -vim.keymap.set("t", "", ":bd!", { desc = "Exit terminal mode", silent = true }) -vim.keymap.set("i", "jj", "", { desc = "Exit insert mode", silent = true }) --- TIP: Disable arrow keys in normal mode --- vim.keymap.set('n', '', 'echo "Use h to move!!"') --- vim.keymap.set('n', '', 'echo "Use l to move!!"') --- vim.keymap.set('n', '', 'echo "Use k to move!!"') --- vim.keymap.set('n', '', 'echo "Use j to move!!"') - --- Keybinds to make split navigation easier. --- Use CTRL+ to switch between windows - --- Vertical navigation -vim.keymap.set("n", "", "10j", { desc = "Jump ten spaces down", silent = true }) -vim.keymap.set("n", "", "10k", { desc = "Jump ten spaces up", silent = true }) - --- Horizontal navigation -vim.keymap.set("n", "", "^", { desc = "Jump to start of line", silent = true }) -vim.keymap.set("n", "", "$", { desc = "Jump to end of line", silent = true }) - --- Telescope -vim.keymap.set("n", "ff", ":Telescope find_files", { desc = "Find Files", silent = true }) - --- See `:help wincmd` for a list of all window commands -vim.keymap.set("n", "", "", { desc = "Move focus to the left window", silent = true }) -vim.keymap.set("n", "", "", { desc = "Move focus to the right window", silent = true }) -vim.keymap.set("n", "", "", { desc = "Move focus to the lower window", silent = true }) -vim.keymap.set("n", "", "", { desc = "Move focus to the upper window", silent = true }) - --- Better split keymaps --- vim.keymap.set("n", "v", "v", { desc = "Split window vertically", silent = true }) --- vim.keymap.set("n", "h", "h", { desc = "Split window horizontally", silent = true }) - --- Buffers -vim.keymap.set("n", "tt", ":tabeditn", { desc = "Create a new tab", silent = true }) -vim.keymap.set("n", "te", ":BufferClose", { desc = "Close current tab", silent = true }) -vim.keymap.set("n", "", ":BufferNext", { desc = "Next tab", silent = true }) -vim.keymap.set("n", "", ":BufferPrevious", { desc = "Previous tab", silent = true }) -vim.keymap.set("n", "tl", ":BufferMoveNext", { desc = "Shift tab right", silent = true }) -vim.keymap.set("n", "th", ":BufferMovePrevious", { desc = "Shift tab left", silent = true }) - --- Run Commands - --- Cargo run -local function set_rust_keybindings() - vim.keymap.set( - "n", - "vv", - ":terminal cargo run", - { desc = "Cargo Run", buffer = true, silent = true } - ) -end - --- Python run -local function set_python_keybindings() - vim.keymap.set( - "n", - "vv", - ":terminal python3 main.py", - { desc = "Python Run", buffer = true, silent = true } - ) -end - --- Go run -local function set_go_keybindings() - vim.keymap.set("n", "vv", ":terminal go run .", { desc = "Go Run", buffer = true, silent = true }) -end - -local function set_csharp_keybindings() - vim.keymap.set( - "n", - "vv", - ":terminal dotnet run", - { desc = "DotNet Run", buffer = true, silent = true } - ) -end - --- Set up an autocmd group to run the function on BufRead or BufNewFile for Rust files -vim.api.nvim_create_augroup("RustKeybindings", { clear = true }) -vim.api.nvim_create_autocmd("FileType", { - pattern = "rust", - callback = set_rust_keybindings, - group = "RustKeybindings", -}) - -vim.api.nvim_create_augroup("PythonKeybindings", { clear = true }) -vim.api.nvim_create_autocmd("FileType", { - pattern = "python", - callback = set_python_keybindings, - group = "PythonKeybindings", -}) - -vim.api.nvim_create_augroup("CSharpKeybindings", { clear = true }) -vim.api.nvim_create_autocmd("FileType", { - pattern = "cs", - callback = set_csharp_keybindings, - group = "CSharpKeybindings", -}) - -vim.api.nvim_create_augroup("GoKeybindings", { clear = true }) -vim.api.nvim_create_autocmd("FileType", { - pattern = "go", - callback = set_go_keybindings, - group = "GoKeybindings", -}) - --- Nvim Tree -vim.keymap.set("n", "n", "NvimTreeToggle", { desc = "Toggle Nvim Tree" }) - --- Tab Size -local TAB_WIDTH = 4 -vim.bo.tabstop = TAB_WIDTH -vim.bo.shiftwidth = TAB_WIDTH -vim.bo.expandtab = true --- [[ Basic Autocommands ]] --- See `:help lua-guide-autocommands` - --- Highlight when yanking (copying) text --- Try it with `yap` in normal mode --- See `:help vim.highlight.on_yank()` -vim.api.nvim_create_autocmd("TextYankPost", { - desc = "Highlight when yanking (copying) text", - group = vim.api.nvim_create_augroup("kickstart-highlight-yank", { clear = true }), - callback = function() - vim.highlight.on_yank() - end, -}) - --- [[ Install `lazy.nvim` plugin manager ]] --- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.uv.fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - error("Error cloning lazy.nvim:\n" .. out) - end -end ---@diagnostic disable-next-line: undefined-field -vim.opt.rtp:prepend(lazypath) - -local colors = { - blue = "#89b4fa", - cyan = "#74c7ec", - crust = "#11111b", - white = "#cdd6f4", - red = "#f38ba8", - violet = "#cba6f7", - surface = "#313244", - base = "#1e1e2e", -} - -local bubbles_theme = { - normal = { - a = { fg = colors.crust, bg = colors.blue }, - b = { fg = colors.blue, bg = colors.surface }, - c = { fg = colors.white }, - }, - - insert = { a = { fg = colors.crust, bg = colors.green } }, - visual = { a = { fg = colors.crust, bg = colors.violet } }, - replace = { a = { fg = colors.crust, bg = colors.red } }, - - inactive = { - a = { fg = colors.white, bg = colors.crust }, - b = { fg = colors.white, bg = colors.crust }, - c = { fg = colors.white }, - }, -} - --- PLUGINS - -require("lazy").setup({ - { - "MeanderingProgrammer/render-markdown.nvim", - opts = {}, - dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons - }, - { - "tadmccorkle/markdown.nvim", - ft = "markdown", -- or 'event = "VeryLazy"' - opts = { - -- configuration here or empty for defaults - }, - }, - { - "OmniSharp/omnisharp-vim", - init = function() - vim.g.OmniSharp_server_use_net6 = 1 - end, - }, - { - "rmagatti/auto-session", - lazy = false, - - ---enables autocomplete for opts - ---@module "auto-session" - ---@type AutoSession.Config - opts = { - suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" }, - auto_save = true, - auto_create = true, - auto_restore = true, - -- log_level = 'debug', - }, - }, - { - "mikavilpas/yazi.nvim", - event = "VeryLazy", - keys = { - -- 👇 in this section, choose your own keymappings! - { - "", - "Yazi", - desc = "Open yazi at the current file", - }, - { - -- NOTE: this requires a version of yazi that includes - -- https://github.com/sxyazi/yazi/pull/1305 from 2024-07-18 - "", - "Yazi toggle", - desc = "Resume the last yazi session", - }, - }, - ---@type YaziConfig - opts = { - -- if you want to open yazi instead of netrw, see below for more info - open_for_directories = false, - keymaps = { - show_help = "", - }, - highlight_hovered_buffers_in_same_directory = true, - }, - }, - { - "christoomey/vim-tmux-navigator", - lazy = false, - }, - { - "romgrk/barbar.nvim", - dependencies = { - "lewis6991/gitsigns.nvim", -- OPTIONAL: for git status - "nvim-tree/nvim-web-devicons", -- OPTIONAL: for file icons - }, - init = function() - vim.g.barbar_auto_setup = false - end, - opts = { - -- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default: - -- animation = true, - -- insert_at_start = true, - -- …etc. - }, - version = "^1.0.0", -- optional: only update when a new 1.x version is released - }, - { - "nvim-lualine/lualine.nvim", - config = function() - require("lualine").setup({ - options = { - --theme = bubbles_theme, - component_separators = "", - section_separators = { left = "", right = "" }, - }, - sections = { - lualine_a = { - { "mode", separator = { left = "", right = "" }, right_padding = 2 }, - }, - lualine_b = { - "filename", - "branch", - }, - lualine_c = { - "diagnostics", - }, - lualine_x = { "filetype" }, - lualine_y = { "progress" }, - lualine_z = { - { "location", separator = { left = "", right = "" }, left_padding = 0 }, - }, - }, - inactive_sections = { - lualine_a = { "filename" }, - lualine_b = {}, - lualine_c = {}, - lualine_x = {}, - lualine_y = {}, - lualine_z = { "location" }, - }, - tabline = {}, - extensions = {}, - }) - end, - }, - { "catppuccin/nvim" }, - { "luisiacc/gruvbox-baby" }, - { "rebelot/kanagawa.nvim" }, - { "Biscuit-Theme/biscuit" }, - { "rose-pine/neovim" }, - { - "windwp/nvim-autopairs", - event = "InsertEnter", - config = true, - -- use opts = {} for passing setup options - -- this is equivalent to setup({}) function - }, - { - "sourcegraph/sg.nvim", - dependencies = { - "nvim-lua/plenary.nvim", --[[ "nvim-telescope/telescope.nvim ]] - }, - }, - { - "S1M0N38/love2d.nvim", - cmd = "LoveRun", - opts = {}, - keys = { - { "v", ft = "lua", desc = "LÖVE" }, - { "vv", "LoveRun", ft = "lua", desc = "Run LÖVE" }, - { "vs", "LoveStop", ft = "lua", desc = "Stop LÖVE" }, - }, - }, - { - "nvim-tree/nvim-tree.lua", - version = "*", - lazy = false, - dependencies = { - "nvim-tree/nvim-web-devicons", - }, - config = function() - require("nvim-tree").setup({ - actions = { - open_file = { - quit_on_open = true, - }, - }, - }) - end, - }, - { "tpope/vim-sleuth" }, -- Detect tabstop and shiftwidth automatically - { "sitiom/nvim-numbertoggle" }, - { - "lewis6991/gitsigns.nvim", - opts = { - signs = { - add = { text = "+" }, - change = { text = "~" }, - delete = { text = "_" }, - topdelete = { text = "‾" }, - changedelete = { text = "~" }, - }, - }, - }, - - { -- Useful plugin to show you pending keybinds. - "folke/which-key.nvim", - event = "VimEnter", -- Sets the loading event to 'VimEnter' - config = function() -- This is the function that runs, AFTER loading - require("which-key").setup() - - -- Document existing key chains - require("which-key").add({ - { "c", group = "[C]ode" }, - { "d", group = "[D]ocument" }, - { "r", group = "[R]ename" }, - { "s", group = "[S]earch" }, - { "w", group = "[W]orkspace" }, - { "t", group = "[T]oggle" }, - { "h", group = "Git [H]unk", mode = { "n", "v" } }, - }) - end, - }, - - { -- Fuzzy Finder (files, lsp, etc) - "nvim-telescope/telescope.nvim", - event = "VimEnter", - branch = "0.1.x", - dependencies = { - "nvim-lua/plenary.nvim", - { -- If encountering errors, see telescope-fzf-native README for installation instructions - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - cond = function() - return vim.fn.executable("make") == 1 - end, - }, - { "nvim-telescope/telescope-ui-select.nvim" }, - - -- Useful for getting pretty icons, but requires a Nerd Font. - { "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, - }, - config = function() - require("telescope").setup({ - -- You can put your default mappings / updates / etc. in here - -- All the info you're looking for is in `:help telescope.setup()` - -- - -- defaults = { - -- mappings = { - -- i = { [''] = 'to_fuzzy_refine' }, - -- }, - -- }, - -- pickers = {} - extensions = { - ["ui-select"] = { - require("telescope.themes").get_dropdown(), - }, - }, - }) - - -- Enable Telescope extensions if they are installed - pcall(require("telescope").load_extension, "fzf") - pcall(require("telescope").load_extension, "ui-select") - - -- See `:help telescope.builtin` - local builtin = require("telescope.builtin") - vim.keymap.set("n", "sh", builtin.help_tags, { desc = "[S]earch [H]elp" }) - vim.keymap.set("n", "sk", builtin.keymaps, { desc = "[S]earch [K]eymaps" }) - vim.keymap.set("n", "sf", builtin.find_files, { desc = "[S]earch [F]iles" }) - vim.keymap.set("n", "ss", builtin.builtin, { desc = "[S]earch [S]elect Telescope" }) - vim.keymap.set("n", "sw", builtin.grep_string, { desc = "[S]earch current [W]ord" }) - vim.keymap.set("n", "sg", builtin.live_grep, { desc = "[S]earch by [G]rep" }) - vim.keymap.set("n", "sd", builtin.diagnostics, { desc = "[S]earch [D]iagnostics" }) - vim.keymap.set("n", "sr", builtin.resume, { desc = "[S]earch [R]esume" }) - vim.keymap.set("n", "s.", builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) - -- vim.keymap.set("n", "", builtin.buffers, { desc = "[ ] Find existing buffers" }) - - -- Slightly advanced example of overriding default behavior and theme - vim.keymap.set("n", "/", function() - -- You can pass additional configuration to Telescope to change the theme, layout, etc. - builtin.current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({ - winblend = 10, - previewer = false, - })) - end, { desc = "[/] Fuzzily search in current buffer" }) - - -- It's also possible to pass additional configuration options. - -- See `:help telescope.builtin.live_grep()` for information about particular keys - vim.keymap.set("n", "s/", function() - builtin.live_grep({ - grep_open_files = true, - prompt_title = "Live Grep in Open Files", - }) - end, { desc = "[S]earch [/] in Open Files" }) - - -- Shortcut for searching your Neovim configuration files - vim.keymap.set("n", "sn", function() - builtin.find_files({ cwd = vim.fn.stdpath("config") }) - end, { desc = "[S]earch [N]eovim files" }) - end, - }, - - -- LSP Plugins - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - "folke/lazydev.nvim", - ft = "lua", - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = "luvit-meta/library", words = { "vim%.uv" } }, - }, - }, - }, - { "Bilal2453/luvit-meta", lazy = true }, - { - -- Main LSP Configuration - "neovim/nvim-lspconfig", - opts = { autoformat = false }, - dependencies = { - -- Automatically install LSPs and related tools to stdpath for Neovim - { "williamboman/mason.nvim", config = true }, -- NOTE: Must be loaded before dependants - "williamboman/mason-lspconfig.nvim", - "WhoIsSethDaniel/mason-tool-installer.nvim", - - -- Useful status updates for LSP. - -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` - { "j-hui/fidget.nvim", opts = {} }, - - -- Allows extra capabilities provided by nvim-cmp - "hrsh7th/cmp-nvim-lsp", - }, - config = function() - -- This function gets run when an LSP attaches to a particular buffer. - -- That is to say, every time a new file is opened that is associated with - -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this - -- function will be executed to configure the current buffer - vim.api.nvim_create_autocmd("LspAttach", { - group = vim.api.nvim_create_augroup("kickstart-lsp-attach", { clear = true }), - callback = function(event) - -- NOTE: Remember that Lua is a real programming language, and as such it is possible - -- to define small helper and utility functions so you don't have to repeat yourself. - -- - -- In this case, we create a function that lets us more easily define mappings specific - -- for LSP related items. It sets the mode, buffer and description for us each time. - local map = function(keys, func, desc) - vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) - end - - -- Jump to the definition of the word under your cursor. - -- This is where a variable was first declared, or where a function is defined, etc. - -- To jump back, press . - map("gd", require("telescope.builtin").lsp_definitions, "[G]oto [D]efinition") - - -- Find references for the word under your cursor. - map("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") - - -- Jump to the implementation of the word under your cursor. - -- Useful when your language has ways of declaring types without an actual implementation. - map("gI", require("telescope.builtin").lsp_implementations, "[G]oto [I]mplementation") - - -- Jump to the type of the word under your cursor. - -- Useful when you're not sure what type a variable is and you want to see - -- the definition of its *type*, not where it was *defined*. - map("D", require("telescope.builtin").lsp_type_definitions, "Type [D]efinition") - - -- Fuzzy find all the symbols in your current document. - -- Symbols are things like variables, functions, types, etc. - map("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") - - -- Fuzzy find all the symbols in your current workspace. - -- Similar to document symbols, except searches over your entire project. - map( - "ws", - require("telescope.builtin").lsp_dynamic_workspace_symbols, - "[W]orkspace [S]ymbols" - ) - - -- Rename the variable under your cursor. - -- Most Language Servers support renaming across files, etc. - map("rn", vim.lsp.buf.rename, "[R]e[n]ame") - - -- Execute a code action, usually your cursor needs to be on top of an error - -- or a suggestion from your LSP for this to activate. - map("ca", vim.lsp.buf.code_action, "[C]ode [A]ction") - - -- WARN: This is not Goto Definition, this is Goto Declaration. - -- For example, in C this would take you to the header. - map("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") - - -- The following two autocommands are used to highlight references of the - -- word under your cursor when your cursor rests there for a little while. - -- See `:help CursorHold` for information about when this is executed - -- - -- When you move your cursor, the highlights will be cleared (the second autocommand). - local client = vim.lsp.get_client_by_id(event.data.client_id) - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then - local highlight_augroup = - vim.api.nvim_create_augroup("kickstart-lsp-highlight", { clear = false }) - vim.api.nvim_create_autocmd({ "CursorHold", "CursorHoldI" }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.document_highlight, - }) - - vim.api.nvim_create_autocmd({ "CursorMoved", "CursorMovedI" }, { - buffer = event.buf, - group = highlight_augroup, - callback = vim.lsp.buf.clear_references, - }) - - vim.api.nvim_create_autocmd("LspDetach", { - group = vim.api.nvim_create_augroup("kickstart-lsp-detach", { clear = true }), - callback = function(event2) - vim.lsp.buf.clear_references() - vim.api.nvim_clear_autocmds({ group = "kickstart-lsp-highlight", buffer = event2.buf }) - end, - }) - end - - -- The following code creates a keymap to toggle inlay hints in your - -- code, if the language server you are using supports them - -- - -- This may be unwanted, since they displace some of your code - if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then - map("th", function() - vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = event.buf })) - end, "[T]oggle Inlay [H]ints") - end - end, - }) - - -- LSP servers and clients are able to communicate to each other what features they support. - -- By default, Neovim doesn't support everything that is in the LSP specification. - -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. - -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers. - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = vim.tbl_deep_extend("force", capabilities, require("cmp_nvim_lsp").default_capabilities()) - - require("lspconfig").gdscript.setup({ - force_setup = true, -- because the LSP is global. Read more on lsp-zero docs about this. - single_file_support = false, - cmd = { "netcat", "127.0.0.1", "6005" }, -- the important trick for Windows! - root_dir = require("lspconfig.util").root_pattern("project.godot", ".git"), - filetypes = { "gd", "gdscript", "gdscript3" }, - }) - -- Enable the following language servers - -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. - -- - -- Add any additional override configuration in the following tables. Available keys are: - -- - cmd (table): Override the default command used to start the server - -- - filetypes (table): Override the default list of associated filetypes for the server - -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. - -- - settings (table): Override the default settings passed when initializing the server. - -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ - local servers = { - -- clangd = {}, - gopls = {}, - rust_analyzer = {}, - gdtoolkit = { - cmd = { "nc", "localhost", "6005" }, - filetypes = { "gd", "gdscript" }, - root_dir = function() - return vim.fn.getcwd() - end, - }, - -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs - -- - -- Some languages (like typescript) have entire language plugins that can be useful: - -- https://github.com/pmizio/typescript-tools.nvim - -- - -- But for many setups, the LSP (`tsserver`) will work just fine - -- tsserver = {}, - -- - lua_ls = { - -- cmd = {...}, - -- filetypes = { ...}, - -- capabilities = {}, - settings = { - Lua = { - completion = { - callSnippet = "Replace", - }, - -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings - -- diagnostics = { disable = { 'missing-fields' } }, - }, - }, - }, - } - - -- Ensure the servers and tools above are installed - -- To check the current status of installed tools and/or manually install - -- other tools, you can run - -- :Mason - -- - -- You can press `g?` for help in this menu. - require("mason").setup() - - -- You can add other tools here that you want Mason to install - -- for you, so that they are available from within Neovim. - local ensure_installed = vim.tbl_keys(servers or {}) - vim.list_extend(ensure_installed, { - "stylua", -- Used to format Lua code - }) - require("mason-tool-installer").setup({ ensure_installed = ensure_installed }) - - require("mason-lspconfig").setup({ - handlers = { - function(server_name) - local server = servers[server_name] or {} - -- This handles overriding only values explicitly passed - -- by the server configuration above. Useful when disabling - -- certain features of an LSP (for example, turning off formatting for tsserver) - server.capabilities = vim.tbl_deep_extend("force", {}, capabilities, server.capabilities or {}) - require("lspconfig")[server_name].setup(server) - end, - }, - }) - end, - }, - - { -- Autoformat - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - keys = { - { - "f", - function() - require("conform").format({ async = true, lsp_fallback = true }) - end, - mode = "", - desc = "[F]ormat buffer", - }, - }, - opts = { - notify_on_error = false, - format_on_save = function(bufnr) - -- Disable "format_on_save lsp_fallback" for languages that don't - -- have a well standardized coding style. You can add additional - -- languages here or re-enable it for the disabled ones. - local disable_filetypes = { c = true, cpp = true } - return { - timeout_ms = 500, - lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype], - } - end, - formatters_by_ft = { - lua = { "stylua" }, - -- Conform can also run multiple formatters sequentially - -- python = { "isort", "black" }, - -- - -- You can use 'stop_after_first' to run the first available formatter from the list - -- javascript = { "prettierd", "prettier", stop_after_first = true }, - }, - }, - }, - - { -- Autocompletion - "hrsh7th/nvim-cmp", - outs = function(_, opts) - table.insert(opts.sources, { - { name = "emoji" }, - { name = "orgmode" }, - }) - local cmp = require("cmp") - opts.window = { - completion = cmp.config.window.bordered({}), - documentation = cmp.config.window.bordered({}), - } - -- Set view to follow cursor while typing - opts.view = { - entries = { - follow_cursor = true, - }, - } - end, - event = "InsertEnter", - dependencies = { - -- Snippet Engine & its associated nvim-cmp source - { - "L3MON4D3/LuaSnip", - build = (function() - -- Build Step is needed for regex support in snippets. - -- This step is not supported in many windows environments. - -- Remove the below condition to re-enable on windows. - if vim.fn.has("win32") == 1 or vim.fn.executable("make") == 0 then - return - end - return "make install_jsregexp" - end)(), - dependencies = { - -- `friendly-snippets` contains a variety of premade snippets. - -- See the README about individual language/framework/plugin snippets: - -- https://github.com/rafamadriz/friendly-snippets - -- { - -- 'rafamadriz/friendly-snippets', - -- config = function() - -- require('luasnip.loaders.from_vscode').lazy_load() - -- end, - -- }, - }, - }, - "saadparwaiz1/cmp_luasnip", - - -- Adds other completion capabilities. - -- nvim-cmp does not ship with all sources by default. They are split - -- into multiple repos for maintenance purposes. - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-path", - "hrsh7th/cmp-emoji", - }, - config = function() - -- See `:help cmp` - local cmp = require("cmp") - local luasnip = require("luasnip") - luasnip.config.setup({}) - - cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - completion = { completeopt = "menu,menuone,noinsert" }, - - mapping = cmp.mapping.preset.insert({ - -- Select the [n]ext item - [""] = cmp.mapping.select_next_item(), - -- Select the [p]revious item - [""] = cmp.mapping.select_prev_item(), - - -- Scroll the documentation window [b]ack / [f]orward - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - - -- Accept ([y]es) the completion. - -- This will auto-import if your LSP supports it. - -- This will expand snippets if the LSP sent a snippet. - [""] = cmp.mapping.confirm({ select = true }), - - [""] = cmp.mapping.complete({}), - - -- will move you to the right of each of the expansion locations. - -- is similar, except moving you backwards. - [""] = cmp.mapping(function() - if luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - end - end, { "i", "s" }), - [""] = cmp.mapping(function() - if luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - end - end, { "i", "s" }), - - -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: - -- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps - }), - sources = { - { - name = "lazydev", - -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it - group_index = 0, - }, - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "path" }, - }, - }) - end, - }, - - { -- You can easily change to a different colorscheme. - -- Change the name of the colorscheme plugin below, and then - -- change the command in the config to whatever the name of that colorscheme is. - -- - -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. - "folke/tokyonight.nvim", - priority = 1000, -- Make sure to load this before all the other start plugins. - init = function() - -- Load the colorscheme here. - -- Like many other themes, this one has different styles, and you could load - -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme(colorscheme) - - -- You can configure highlights by doing something like: - vim.cmd.hi("Comment gui=none") - end, - }, - - -- Highlight todo, notes, etc in comments - { - "folke/todo-comments.nvim", - event = "VimEnter", - dependencies = { "nvim-lua/plenary.nvim" }, - opts = { signs = false }, - }, - - { -- Collection of various small independent plugins/modules - "echasnovski/mini.nvim", - config = function() - -- Better Around/Inside textobjects - -- - -- Examples: - -- - va) - [V]isually select [A]round [)]paren - -- - yinq - [Y]ank [I]nside [N]ext [Q]uote - -- - ci' - [C]hange [I]nside [']quote - require("mini.ai").setup({ n_lines = 500 }) - - -- Add/delete/replace surroundings (brackets, quotes, etc.) - -- - -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren - -- - sd' - [S]urround [D]elete [']quotes - -- - sr)' - [S]urround [R]eplace [)] ['] - require("mini.surround").setup() - - -- ... and there is more! - -- Check out: https://github.com/echasnovski/mini.nvim - end, - }, - { -- Highlight, edit, and navigate code - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate", - opts = { - ensure_installed = { - "bash", - "c", - "diff", - "html", - "lua", - "luadoc", - "markdown", - "markdown_inline", - "query", - "vim", - "vimdoc", - }, - -- Autoinstall languages that are not installed - auto_install = true, - highlight = { - enable = true, - -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. - -- If you are experiencing weird indenting issues, add the language to - -- the list of additional_vim_regex_highlighting and disabled languages for indent. - additional_vim_regex_highlighting = { "ruby" }, - }, - indent = { enable = true, disable = { "ruby" } }, - }, - config = function(_, opts) - -- [[ Configure Treesitter ]] See `:help nvim-treesitter` - - ---@diagnostic disable-next-line: missing-fields - require("nvim-treesitter.configs").setup(opts) - - -- There are additional nvim-treesitter modules that you can use to interact - -- with nvim-treesitter. You should go explore a few and see what interests you: - -- - -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` - -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context - -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects - end, - }, - - -- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the - -- init.lua. If you want these files, they are in the repository, so you can just download them and - -- place them in the correct locations. - - -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart - -- - -- Here are some example plugins that I've included in the Kickstart repository. - -- Uncomment any of the lines below to enable them (you will need to restart nvim). - -- - -- require 'kickstart.plugins.debug', - -- require 'kickstart.plugins.indent_line', - -- require 'kickstart.plugins.lint', - -- require 'kickstart.plugins.autopairs', - -- require 'kickstart.plugins.neo-tree', - -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps - - -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` - -- This is the easiest way to modularize your config. - -- - -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins` - -- { import = 'custom.plugins' }, -}, { - ui = { - -- If you are using a Nerd Font: set icons to an empty table which will use the - -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table - icons = vim.g.have_nerd_font and {} or { - cmd = "⌘", - config = "🛠", - event = "📅", - ft = "📂", - init = "⚙", - keys = "🗝", - plugin = "🔌", - runtime = "💻", - require = "🌙", - source = "📄", - start = "🚀", - task = "📌", - lazy = "💤 ", - }, - }, -}) - --- The line beneath this is called `modeline`. See `:help modeline` --- vim: ts=2 sts=2 sw=2 et diff --git a/yabai/.config/yabai/yabairc b/yabai/.config/yabai/yabairc index cb26559..05a4240 100644 --- a/yabai/.config/yabai/yabairc +++ b/yabai/.config/yabai/yabairc @@ -31,6 +31,7 @@ yabai -m rule --add app="Godot" title=".*Settings.*" manage=off yabai -m rule --add app="Godot" title=".*Create.*" manage=off yabai -m rule --add app="Godot" title="Please Confirm..." manage=off yabai -m rule --add app="Godot" title=".*Save.*" manage=off +yabai -m rule --add app="Godot" title=".*Open.*" manage=off # include apps yabai -m rule --add app="^Unity$" manage=on