Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Duplicate "go to definition" results when using table assignment syntax in a module

Offen
#3,243 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
lua
Bereich
devtools

Rechercherichtung

Reproduziere die doppelten Ergebnisse mit dem Beispiel aus den zwei Dateien lib.lua und other.lua und vergleiche es anschließend mit der Form function lib.func(). Beginne damit, die go-to-definition-Verarbeitung des Language Servers für die Syntax von Tabellenzuweisungen nachzuverfolgen, und verwende die bereitgestellte Logdatei als Kontext. Als erledigt gilt die Aufgabe, wenn die Zuweisungsform an der Funktionsdeklaration genau ein Definitionsergebnis zurückgibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

How are you using the lua-language-server?

Kakoune

Which OS are you using?

MacOS

What is the issue affecting?

Other

Expected Behaviour

When a module is written by assigning functions to table members with the following syntax:

local lib={}

lib.func = function()
  -- ...
end

return lib

Performing a "Go to definition" on this function from another file that requires the module should go to the function defintion.

Actual Behaviour

Instead when doing a "Go to defintion", there are 2 results, and the user must choose one. They both point to the same line, one points to the table member's name and the other to the start of the function declaration.

Image
Reproduction steps
  1. Create a project with two files, lib.lua and other.lua, and populate them as follows:

lib.lua:

local lib={}

lib.func = function() end

return lib

other.lua:

local lib = require('lib')

lib.func()
  1. From other.lua, perform a "Go to definition" on func. Note that it has two results that must be chosen, one will take you to the table member's name, and the other will take you to the start of the function declaration.

  2. Change lib.lua to:

local lib={}

function lib.func() end

return lib
  1. From other.lua, perform a "Go to definition" on func. It takes you directly to the start of the function declaration (which is also the table member's name).
Additional Notes

I know that the function lib.func() syntax is preferred, but this is an issue for me when using libraries that use the lib.func = function() syntax. I wasn't able to find any discussions of this issue, but it seems likely that others have run into it, so I am wondering if there is a solution that I just haven't found.

Log File

file_Users_evanjohnson_sandbox_lua-lsp-test.log

Vorherrschende Sprache
Lua
Sterne
4.4k
Forks
442
Ø Merge
8 T. 9 Std.
Gemergte PRs (30 T.)
1

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus LuaLS/lua-language-server

Alle Issues in LuaLS/lua-language-server

Ähnliche Issues

Weitere Issues zu Lua

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.