Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vif/vaf not working in Lua code #688

Open
tmbdev opened this issue Sep 9, 2024 · 1 comment
Open

vif/vaf not working in Lua code #688

tmbdev opened this issue Sep 9, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@tmbdev
Copy link

tmbdev commented Sep 9, 2024

Describe the bug
vaf/vif not working in Lua code

To Reproduce

  1. install nvim-treesitter and nvim-treesitter-textobjects
  2. load a .lua file
  3. move cursor inside a Lua function definition
  4. use vaf/vif to attempt to mark the function

Expected behavior
I expect the lines comprising the function to be selected. Instead, it just changes into visual mode

The following work, however:

  • marking functions with vif/vaf in Python code works
  • marking paragraphs with vip/vap in Lua code works
  • :InspectTree shows that the function is properly recognized by the parser

Output of :checkhealth nvim-treesitter

==============================================================================
nvim-treesitter: require("nvim-treesitter.health").check()

Installation ~

  • OK tree-sitter found 0.23.0 (parser generator, only needed for :TSInstallFromGrammar)
  • OK node found v18.20.4 (only needed for :TSInstallFromGrammar)
  • OK git executable found.
  • OK cc executable found. Selected from { vim.NIL, "cc", "gcc", "clang", "cl", "zig" }
    Version: Apple clang version 15.0.0 (clang-1500.3.9.4)
  • OK Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

OS Info:
{
machine = "arm64",
release = "23.5.0",
sysname = "Darwin",
version = "Darwin Kernel Version 23.5.0: Wed May 1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000"
} ~

Parser/Features H L F I J

  • c ✓ ✓ ✓ ✓ ✓
  • cpp ✓ ✓ ✓ ✓ ✓
  • fortran ✓ . ✓ ✓ ✓
  • go ✓ ✓ ✓ ✓ ✓
  • haskell ✓ ✓ ✓ . ✓
  • lua ✓ ✓ ✓ ✓ ✓
  • markdown ✓ . ✓ ✓ ✓
  • markdown_inline ✓ . . . ✓
  • python ✓ ✓ ✓ ✓ ✓
  • query ✓ ✓ ✓ ✓ ✓
  • vim ✓ ✓ ✓ . ✓
  • vimdoc ✓ . . . ✓

Legend: H[ighlight], L[ocals], F[olds], I[ndents], In[j]ections
+) multiple parsers found, only one will be used
x) errors found in the query, try to run :TSUpdate {lang} ~

Output of nvim --version

% nvim -version
NVIM v0.10.1
Build type: Release
LuaJIT 2.1.1724512491
Run "nvim -V1 -v" for more info

Additional context
I'm using this init.lua file with -u to isolate the problem, but I get the same problem with my full .lua file:

-- Packer setup to manage plugins
require('packer').startup({
  function(use)
    -- Packer manages itself
    use 'wbthomason/packer.nvim'

    -- Treesitter for syntax highlighting and textobjects
    use {
      'nvim-treesitter/nvim-treesitter',
      run = ':TSUpdate',
      config = function()
        require('nvim-treesitter.configs').setup {
          ensure_installed = { "lua" },  -- Install Lua parser
          highlight = { enable = true }, -- Enable syntax highlighting
          textobjects = { enable = true } -- Enable textobjects
        }
      end
    }

    -- Treesitter Textobjects support
    use 'nvim-treesitter/nvim-treesitter-textobjects'
  end,
  config = {
    auto_clean = false,  -- Disable automatic cleanup of unused plugins
  }

})

-- Basic Neovim settings
vim.opt.number = true             -- Show line numbers
vim.opt.relativenumber = true     -- Show relative line numbers
vim.opt.expandtab = true          -- Use spaces instead of tabs
vim.opt.shiftwidth = 2            -- Number of spaces for each indentation
vim.opt.tabstop = 2               -- Number of spaces per tab
@tmbdev tmbdev added the bug Something isn't working label Sep 9, 2024
@ribru17
Copy link
Member

ribru17 commented Sep 26, 2024

You need to set the keymaps manually I believe, I use this:

      -- Globally map Tree-sitter text object binds
      local function textobj_map(key, query)
        local outer = '@' .. query .. '.outer'
        local inner = '@' .. query .. '.inner'
        local opts = {
          desc = 'Selection for ' .. query .. ' text objects',
          silent = true,
        }
        map('x', 'i' .. key, function()
          vim.cmd.TSTextobjectSelect(inner)
        end, opts)
        map('x', 'a' .. key, function()
          vim.cmd.TSTextobjectSelect(outer)
        end, opts)
        map('o', 'i' .. key, function()
          vim.cmd.TSTextobjectSelect(inner)
        end, opts)
        map('o', 'a' .. key, function()
          vim.cmd.TSTextobjectSelect(outer)
        end, opts)
      end

      textobj_map('f', 'call')
      textobj_map('F', 'function')
      -- ... etc.

Also I think the config should be of the form textobjects = { select = { enable = true} } -- Enable textobjects

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants