@@ -125,7 +125,7 @@ function Explorer:reload(node, git_status)
125
125
})
126
126
127
127
while true do
128
- local name , t = vim .loop .fs_scandir_next (handle )
128
+ local name , _ = vim .loop .fs_scandir_next (handle )
129
129
if not name then
130
130
break
131
131
end
@@ -138,11 +138,14 @@ function Explorer:reload(node, git_status)
138
138
if filter_reason == FILTER_REASON .none then
139
139
remain_childs [abs ] = true
140
140
141
+ -- Type must come from fs_stat and not fs_scandir_next to maintain sshfs compatibility
142
+ local type = stat and stat .type or nil
143
+
141
144
-- Recreate node if type changes.
142
145
if nodes_by_path [abs ] then
143
146
local n = nodes_by_path [abs ]
144
147
145
- if n .type ~= t then
148
+ if n .type ~= type then
146
149
utils .array_remove (node .nodes , n )
147
150
explorer_node .node_destroy (n )
148
151
nodes_by_path [abs ] = nil
@@ -151,11 +154,11 @@ function Explorer:reload(node, git_status)
151
154
152
155
if not nodes_by_path [abs ] then
153
156
local new_child = nil
154
- if t == " directory" and vim .loop .fs_access (abs , " R" ) and Watcher .is_fs_event_capable (abs ) then
157
+ if type == " directory" and vim .loop .fs_access (abs , " R" ) and Watcher .is_fs_event_capable (abs ) then
155
158
new_child = builders .folder (node , abs , name , stat )
156
- elseif t == " file" then
159
+ elseif type == " file" then
157
160
new_child = builders .file (node , abs , name , stat )
158
- elseif t == " link" then
161
+ elseif type == " link" then
159
162
local link = builders .link (node , abs , name , stat )
160
163
if link .link_to ~= nil then
161
164
new_child = link
0 commit comments