From 37957d6bcf88999d41240f81610d29d48364c452 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Sat, 3 Jun 2023 12:08:14 +0200 Subject: [PATCH] refactor: use `vim.uv` --- .github/workflows/test-queries.yml | 1 - lua/nvim-treesitter/config.lua | 2 +- lua/nvim-treesitter/health.lua | 2 +- lua/nvim-treesitter/install.lua | 2 +- lua/nvim-treesitter/job.lua | 8 ++-- lua/nvim-treesitter/util.lua | 2 +- runtime/queries/bass/injections.scm | 3 -- scripts/check-queries.lua | 72 +++++++++++------------------ scripts/update-readme.lua | 10 ++-- 9 files changed, 40 insertions(+), 62 deletions(-) diff --git a/.github/workflows/test-queries.yml b/.github/workflows/test-queries.yml index bb11db3d..3b171779 100644 --- a/.github/workflows/test-queries.yml +++ b/.github/workflows/test-queries.yml @@ -52,7 +52,6 @@ jobs: env: CC: ${{ matrix.cc }} NVIM: ${{ matrix.os == 'windows-latest' && 'nvim-win64\\bin\\nvim.exe' || 'nvim' }} - ALLOWED_INSTALLATION_FAILURES: ${{ matrix.os == 'windows-latest' && 'rnoweb' }} steps: - uses: actions/checkout@v4 - uses: tree-sitter/setup-action/cli@v1 diff --git a/lua/nvim-treesitter/config.lua b/lua/nvim-treesitter/config.lua index c77ee135..9d9e1d3a 100644 --- a/lua/nvim-treesitter/config.lua +++ b/lua/nvim-treesitter/config.lua @@ -62,7 +62,7 @@ end function M.get_install_dir(dir_name) local dir = vim.fs.joinpath(config.install_dir, dir_name) - if not vim.loop.fs_stat(dir) then + if not vim.uv.fs_stat(dir) then local ok, err = pcall(vim.fn.mkdir, dir, 'p', '0755') if not ok then local log = require('nvim-treesitter.log') diff --git a/lua/nvim-treesitter/health.lua b/lua/nvim-treesitter/health.lua index 037887c5..3573e7f5 100644 --- a/lua/nvim-treesitter/health.lua +++ b/lua/nvim-treesitter/health.lua @@ -104,7 +104,7 @@ local function install_health() end end - vim.health.start('OS Info:\n' .. vim.inspect(vim.loop.os_uname())) + vim.health.start('OS Info:\n' .. vim.inspect(vim.uv.os_uname())) end local function query_status(lang, query_group) diff --git a/lua/nvim-treesitter/install.lua b/lua/nvim-treesitter/install.lua index 3fba73db..84bc9902 100644 --- a/lua/nvim-treesitter/install.lua +++ b/lua/nvim-treesitter/install.lua @@ -1,6 +1,6 @@ local api = vim.api local fs = vim.fs -local uv = vim.loop +local uv = vim.uv local a = require('nvim-treesitter.async') local config = require('nvim-treesitter.config') diff --git a/lua/nvim-treesitter/job.lua b/lua/nvim-treesitter/job.lua index 9c2788cb..460a543b 100644 --- a/lua/nvim-treesitter/job.lua +++ b/lua/nvim-treesitter/job.lua @@ -1,5 +1,5 @@ -- Interface with Neovim job control and provide a simple job sequencing structure -local uv = vim.loop +local uv = vim.uv local a = require('nvim-treesitter.async') local log = require('nvim-treesitter.log') @@ -18,8 +18,8 @@ local M = { JobResult = {}, Opts = {} } --- @field on_stderr fun(_: string) --- @field on_stdout fun(_: string) ---- Wrapper for vim.loop.spawn. Takes a command, options, and callback just like ---- vim.loop.spawn, but ensures that all output from the command has been +--- Wrapper for vim.uv.spawn. Takes a command, options, and callback just like +--- vim.uv.spawn, but ensures that all output from the command has been --- flushed before calling the callback. --- @param cmd string --- @param options uv.aliases.spawn_options @@ -66,7 +66,7 @@ end --- Main exposed function for the jobs module. Takes a task and options and --- returns an async function that will run the task with the given opts via ---- vim.loop.spawn +--- vim.uv.spawn --- @param task string[] --- @param opts JobOpts --- @param callback fun(_: JobResult) diff --git a/lua/nvim-treesitter/util.lua b/lua/nvim-treesitter/util.lua index 276eafdd..3087e942 100644 --- a/lua/nvim-treesitter/util.lua +++ b/lua/nvim-treesitter/util.lua @@ -1,4 +1,4 @@ -local uv = vim.loop +local uv = vim.uv local M = {} diff --git a/runtime/queries/bass/injections.scm b/runtime/queries/bass/injections.scm index 1c2fe3cc..2f0e58eb 100644 --- a/runtime/queries/bass/injections.scm +++ b/runtime/queries/bass/injections.scm @@ -1,5 +1,2 @@ ((comment) @injection.content (#set! injection.language "comment")) - -((block_comment) @injection.content - (#set! injection.language "comment")) diff --git a/scripts/check-queries.lua b/scripts/check-queries.lua index fd9d538a..3f5a9aa7 100755 --- a/scripts/check-queries.lua +++ b/scripts/check-queries.lua @@ -39,6 +39,7 @@ local function do_check() local timings = {} local parsers = require('nvim-treesitter.config').installed_parsers() local query_types = require('nvim-treesitter.health').bundled_queries + local configs = require('nvim-treesitter.parsers').configs local captures = extract_captures() local errors = {} @@ -46,30 +47,32 @@ local function do_check() io_print('::group::Check parsers') for _, lang in pairs(parsers) do - timings[lang] = {} - for _, query_type in pairs(query_types) do - local before = vim.loop.hrtime() - local ok, query = pcall(vim.treesitter.query.get, lang, query_type) - local after = vim.loop.hrtime() - local duration = after - before - table.insert(timings, { duration = duration, lang = lang, query_type = query_type }) - io_print( - 'Checking ' .. lang .. ' ' .. query_type .. string.format(' (%.02fms)', duration * 1e-6) - ) - if not ok then - local err_msg = lang .. ' (' .. query_type .. '): ' .. query - errors[#errors + 1] = err_msg - else - if query then - for _, capture in ipairs(query.captures) do - local is_valid = ( - vim.startswith(capture, '_') -- Helpers. - or vim.list_contains(captures[query_type], capture) - ) - if not is_valid then - local error = - string.format('(x) Invalid capture @%s in %s for %s.', capture, query_type, lang) - errors[#errors + 1] = error + if configs[lang].install_info then + timings[lang] = {} + for _, query_type in pairs(query_types) do + local before = vim.uv.hrtime() + local ok, query = pcall(vim.treesitter.query.get, lang, query_type) + local after = vim.uv.hrtime() + local duration = after - before + table.insert(timings, { duration = duration, lang = lang, query_type = query_type }) + io_print( + 'Checking ' .. lang .. ' ' .. query_type .. string.format(' (%.02fms)', duration * 1e-6) + ) + if not ok then + local err_msg = lang .. ' (' .. query_type .. '): ' .. query + errors[#errors + 1] = err_msg + else + if query then + for _, capture in ipairs(query.captures) do + local is_valid = ( + vim.startswith(capture, '_') -- Helpers. + or vim.list_contains(captures[query_type], capture) + ) + if not is_valid then + local error = + string.format('(x) Invalid capture @%s in %s for %s.', capture, query_type, lang) + errors[#errors + 1] = error + end end end end @@ -90,27 +93,6 @@ local function do_check() end local ok, result = pcall(do_check) -local allowed_to_fail = vim.split(vim.env.ALLOWED_INSTALLATION_FAILURES or '', ',', true) - -for k, v in pairs(require('nvim-treesitter.parsers').configs) do - if v.install_info then - -- skip "query only" languages - if #vim.api.nvim_get_runtime_file('parser/' .. k .. '.*', false) == 0 then - -- On CI all parsers that can be installed from C files should be installed - if - vim.env.CI - and not v.install_info.requires_generate_from_grammar - and not vim.list_contains(allowed_to_fail, k) - then - io_print('Error: parser for ' .. k .. ' is not installed') - vim.cmd('cq') - else - io_print('Warning: parser for ' .. k .. ' is not installed') - end - end - end -end - if ok then io_print('::group::Timings') table.sort(result, function(a, b) diff --git a/scripts/update-readme.lua b/scripts/update-readme.lua index 2133ad0c..fb9a9b32 100755 --- a/scripts/update-readme.lua +++ b/scripts/update-readme.lua @@ -50,11 +50,11 @@ for _, v in ipairs(sorted_parsers) do -- queries generated_text = generated_text .. '`' - .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/highlights.scm') and 'H' or ' ') - .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/folds.scm') and 'F' or ' ') - .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/indents.scm') and 'I' or ' ') - .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/injections.scm') and 'J' or ' ') - .. (vim.loop.fs_stat('runtime/queries/' .. v.name .. '/locals.scm') and 'L' or ' ') + .. (vim.uv.fs_stat('runtime/queries/' .. v.name .. '/highlights.scm') and 'H' or ' ') + .. (vim.uv.fs_stat('runtime/queries/' .. v.name .. '/folds.scm') and 'F' or ' ') + .. (vim.uv.fs_stat('runtime/queries/' .. v.name .. '/indents.scm') and 'I' or ' ') + .. (vim.uv.fs_stat('runtime/queries/' .. v.name .. '/injections.scm') and 'J' or ' ') + .. (vim.uv.fs_stat('runtime/queries/' .. v.name .. '/locals.scm') and 'L' or ' ') .. '` | ' -- CLI