themes: Don't try to call `fs.load_bytes` on a directory path on rescans (#60399)

# Objective

Before this change, we watched the themes directory itself. During
rescans, this could generate events for the directory, causing Zed to
attempt to load `event.path` as a file via
`fs.load_bytes(&event.path).await.log_err()`. This happened because
`fs.metadata(&event.path).await.ok().flatten().is_some()` also returns
true for directories.

Since load_bytes will always fail for a directory, we can avoid the
unnecessary call by skipping it whenever `event.path` refers to a
directory.

The rescan happens when Zed lost sync with the filesystem. That will
produce the following logs:

```
2026-07-01T16:03:35+02:00 WARN  [fs::fs_watcher] filesystem watcher lost sync for many files, not logging more
2026-07-01T16:03:35+02:00 ERROR [crates/zed/src/main.rs:1891] Is a directory (os error 21)
```

## Solution

The solution is that we just can check if the `event.path` is a
directory if so we can skip the
`fs.load_bytes(&event.path).await.log_err()` part described aboth.

## Testing

All tests should still pass and there should be no impact since this
only happens on rescans when the system is under pressure with alot of
fs events.

**Note**: No regression test was added since there's nothing to test
here.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- N/A
b4d9194fceRemco Smits committed on 7/6/2026, 3:12:43 AM· committed by GitHubparent5b805ac
1 file changedLine totals unavailable