From 6076a4f3bf7a4a9b8a3aeb1cacbc648af415b8ad Mon Sep 17 00:00:00 2001 From: Nicholas Novak Date: Sun, 3 May 2026 14:00:55 -0700 Subject: [PATCH] fix: get osc52 working --- nvim/.config/nvim/init.lua | 90 ++++++++++++++++++++-------- nvim/.config/nvim/lazy-lock.json | 2 +- nvim/.config/nvim/plugin/options.lua | 8 ++- 3 files changed, 73 insertions(+), 27 deletions(-) diff --git a/nvim/.config/nvim/init.lua b/nvim/.config/nvim/init.lua index 2db358d..5e8b587 100644 --- a/nvim/.config/nvim/init.lua +++ b/nvim/.config/nvim/init.lua @@ -335,7 +335,8 @@ require("lazy").setup({ -- -- tsgo = {}, - eslint = {}, + -- eslint = {}, + biome = {}, lua_ls = { -- cmd = { ... }, @@ -747,11 +748,13 @@ require("lazy").setup({ { -- Highlight, edit, and navigate code "nvim-treesitter/nvim-treesitter", + lazy = false, build = ":TSUpdate", - main = "nvim-treesitter.config", -- Sets main module to use for opts - -- [[ Configure Treesitter ]] See `:help nvim-treesitter` - opts = { - ensure_installed = { + branch = "main", + -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro` + config = function() + -- ensure basic parser are installed + local parsers = { "bash", "c", "diff", @@ -763,25 +766,61 @@ require("lazy").setup({ "query", "vim", "vimdoc", - "typescript", - }, - -- 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" } }, - }, - -- 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 + } + require("nvim-treesitter").install(parsers) + + ---@param buf integer + ---@param language string + local function treesitter_try_attach(buf, language) + -- check if parser exists and load it + if not vim.treesitter.language.add(language) then + return + end + -- enables syntax highlighting and other treesitter features + vim.treesitter.start(buf, language) + + -- enables treesitter based folds + -- for more info on folds see `:help folds` + -- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()' + -- vim.wo.foldmethod = 'expr' + + -- check if treesitter indentation is available for this language, and if so enable it + -- in case there is no indent query, the indentexpr will fallback to the vim's built in one + local has_indent_query = vim.treesitter.query.get(language, "indents") ~= nil + + -- enables treesitter based indentation + if has_indent_query then + vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" + end + end + + local available_parsers = require("nvim-treesitter").get_available() + vim.api.nvim_create_autocmd("FileType", { + callback = function(args) + local buf, filetype = args.buf, args.match + + local language = vim.treesitter.language.get_lang(filetype) + if not language then + return + end + + local installed_parsers = require("nvim-treesitter").get_installed("parsers") + + if vim.tbl_contains(installed_parsers, language) then + -- enable the parser if it is installed + treesitter_try_attach(buf, language) + elseif vim.tbl_contains(available_parsers, language) then + -- if a parser is available in `nvim-treesitter` auto install it, and enable it after the installation is done + require("nvim-treesitter").install(language):await(function() + treesitter_try_attach(buf, language) + end) + else + -- try to enable treesitter features in case the parser exists but is not available from `nvim-treesitter` + treesitter_try_attach(buf, language) + end + end, + }) + end, }, { @@ -802,3 +841,6 @@ vim.o.termguicolors = true -- Keymaps for better default experience -- See `:help vim.keymap.set()` vim.keymap.set({ "n", "v" }, "", "", { silent = true }) + +vim.g.loaded_python3_provider = nil +vim.cmd("runtime autoload/provider/python3.vim") diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index e71089e..ce24f9a 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -7,7 +7,7 @@ "gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" }, "gruvbox": { "branch": "master", "commit": "697c00291db857ca0af00ec154e5bd514a79191f" }, "indent-blankline.nvim": { "branch": "master", "commit": "d28a3f70721c79e3c5f6693057ae929f3d9c0a03" }, - "lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" }, + "lazy.nvim": { "branch": "main", "commit": "85c7ff3711b730b4030d03144f6db6375044ae82" }, "lazydev.nvim": { "branch": "main", "commit": "ff2cbcba459b637ec3fd165a2be59b7bbaeedf0d" }, "lualine.nvim": { "branch": "master", "commit": "a905eeebc4e63fdc48b5135d3bf8aea5618fb21c" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "0a3b42c3e503df87aef6d6513e13148381495c3a" }, diff --git a/nvim/.config/nvim/plugin/options.lua b/nvim/.config/nvim/plugin/options.lua index 09de45f..0604334 100644 --- a/nvim/.config/nvim/plugin/options.lua +++ b/nvim/.config/nvim/plugin/options.lua @@ -5,8 +5,7 @@ vim.g.have_nerd_font = false vim.o.colorcolumn = "80" vim.o.background = "dark" -vim.opt.clipboard = "unnamedplus" - +vim.o.clipboard = "unnamedplus" vim.g.clipboard = { name = "OSC 52", copy = { @@ -19,6 +18,11 @@ vim.g.clipboard = { }, } +if vim.g.loaded_clipboard_provider ~= nil then + vim.g.loaded_clipboard_provider = nil + vim.cmd("runtime autoload/provider/clipboard.vim") +end + -- Enable mouse mode vim.o.mouse = "a"