Skip to content
This repository was archived by the owner on Nov 28, 2025. It is now read-only.
This repository was archived by the owner on Nov 28, 2025. It is now read-only.

Don't rename function usages in shell script #52

Description

@saccarosium

Describe the bug

Considering the following script:

For example, I have the following script:

greet() {
  echo "Hello"
}

greet

If I try to rename the function greet with new_name it will rename the function declaration, or the individual function call I have my cursor on, but not all the other references to than function.

The function will look something like this:

new_name() {
  echo "Hello"
}

greet

Expected behavior

After I rename one reference to a function I expect that all the renamed references were renamed too.

Output of :checkhealth nvim_treesitter

Details Installation - OK `tree-sitter` found 0.20.8 (parser generator, only needed for :TSInstallFromGrammar) - OK `node` found v20.8.0 (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.0.40.1) - OK Neovim was compiled with tree-sitter runtime ABI version 14 (required >=13). Parsers must be compatible with runtime ABI.

OS Info:
{
machine = "x86_64",
release = "23.0.0",
sysname = "Darwin",
version = "Darwin Kernel Version 23.0.0: Fri Sep 15 14:42:42 PDT 2023; root:xnu-10002.1.13~1/RELEASE_X86_64"
} ~

Parser/Features H L F I J

  • bash ✓ ✓ ✓ . ✓
  • c ✓ ✓ ✓ ✓ ✓
  • cmake ✓ . ✓ ✓ .
  • cpp ✓ ✓ ✓ ✓ ✓
  • diff ✓ . . . .
  • git_rebase ✓ . . . ✓
  • gitcommit ✓ . . . ✓
  • gitignore ✓ . . . .
  • java ✓ ✓ ✓ ✓ ✓
  • javascript ✓ ✓ ✓ ✓ ✓
  • json ✓ ✓ ✓ ✓ .
  • lua ✓ ✓ ✓ ✓ ✓
  • make ✓ . ✓ . ✓
  • markdown ✓ . ✓ ✓ ✓
  • markdown_inline ✓ . . . ✓
  • python ✓ ✓ ✓ ✓ ✓
  • query ✓ ✓ ✓ ✓ ✓
  • requirements ✓ . . . ✓
  • teal ✓ ✓ ✓ ✓ ✓
  • toml ✓ ✓ ✓ ✓ ✓
  • vim ✓ ✓ ✓ . ✓
  • vimdoc ✓ . . . ✓
  • yaml ✓ ✓ ✓ ✓ ✓

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

Note
Appens also on stable release

NVIM v0.10.0-dev-1280+g3079fa1f9
Build type: RelWithDebInfo
LuaJIT 2.1.1695653777
Run "nvim -V1 -v" for more info

Additional context

I'm pretty sure is a problem with the bash parser, but wanna make sure that it is the case.

The parser will produce the following AST for the example script above:

(function_definition) ; [1:1 - 3:1]
 name: (word) ; [1:1 - 5]
 body: (compound_statement) ; [1:9 - 3:1]
  (command) ; [2:5 - 16]
   name: (command_name) ; [2:5 - 8]
    (word) ; [2:5 - 8]
   argument: (string) ; [2:10 - 16]
    (string_content) ; [2:11 - 15]
(command) ; [5:1 - 5]
 name: (command_name) ; [5:1 - 5]
  (word) ; [5:1 - 5]

When you call a function it doesn't distinguish if you are calling a function or an executable. I think this is the issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions