Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Renamed file considered deleted inside directory junction

Abierto
#3,279 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
lua, neovim
Área
tooling

Línea de trabajo

Reproduce el problema en Windows con una configuración de NeoVim almacenada mediante una unión de directorios; después, lee script/filewatch.lua:18 y sigue el manejo del renombrado que se muestra en los logs. Se considera terminado cuando guardar init.lua ya no hace que el language server trate la ruta de la unión como eliminada, mientras hover y go-to-definition siguen funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

How are you using the lua-language-server?

NeoVim

Which OS are you using?

Windows

What is the issue affecting?

Other

Expected Behaviour

LS correctly works with files inside directory junction or symlinks.

Actual Behaviour

LS functionality stops working after saving such a file in editor.

Reproduction steps
  1. Enable LuaLS in NeoVim.
  2. Put NeoVim config files inside directory junction. E.g. I have init.lua file in directory C:\dev\dotfiles\nvim and I've created the junction to that directory in C:\Users\RobotComp.ru\AppData\Local\nvim. NVim reads config files from C:\Users\RobotComp.ru\AppData\Local\nvim.
  3. Open init.lua in NVim, change something and save it with :w command.
  4. After that, any interactions with LS stop working (hover, go to definition, etc.)
  5. If I re-edit file with :e % command, everything starts working again.
Additional Notes

I did some research and found the following.

When saving init.lua, NVim renames it several times (to init.lua~ and back). Don't know why.
The logs (see error.log) show that the filewatch(rename) function is called on LS, which calls isExists().
And although the file exists, isExists() returns false, so the file is considered deleted, and the LS "forgets" about it.

More specifically, the problem occurs in script/filewatch.lua:18:

if res :string():gsub('^%w+:', string.lower)
~= path:string():gsub('^%w+:', string.lower) then
return false
end

Here, it turns out that res contains the actual path to the file (C:\dev\dotfiles\nvim\init.lua), and path contains the path with the junction (C:\Users\RobotComp.ru\AppData\Local\nvim\init.lua).

Commenting out these lines makes everything work correctly (see fixed.log). However, I didn't make a PR with such changes because I didn't fully understand why this path comparison was needed at all. It seems like it fixes some other bug?

Thanks in advance :)

Log File

[00:20:20.415][debug][#0:script\filewatch.lua:98]: filewatch: rename C:\Users\RobotComp.ru\AppData\Local\nvim\init.lua
[00:20:20.415][debug][#0:script\filewatch.lua:98]: filewatch: modify C:\Users\RobotComp.ru\AppData\Local\nvim\init.lua
[00:20:20.415][debug][#0:script\filewatch.lua:98]: filewatch: rename C:\Users\RobotComp.ru\AppData\Local\nvim\init.lua~
[00:20:20.415][debug][#0:script\workspace\workspace.lua:592]: FileChangeType.Deleted file:///c%3A/Users/RobotComp.ru/AppData/Local/nvim/init.lua
[00:20:20.416][debug][#0:script\workspace\workspace.lua:592]: FileChangeType.Deleted file:///c%3A/Users/RobotComp.ru/AppData/Local/nvim/init.lua~

error.log
fixed.log

Lenguaje dominante
Lua
Estrellas
4.4k
Forks
442
Merge medio
8 d 9 h
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de LuaLS/lua-language-server

Todos los issues de LuaLS/lua-language-server

Issues similares

Más issues de Lua

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.