language: Fix bracket `not_in` scopes being ignored at end of buffer (#64840)

## Summary

"Closes #64820"

Bracket `not_in` rules (like "don't auto-close `'` inside a comment")
were ignored when the cursor was at the very end of the file. For
example, in a C file containing only `// it ''`, typing `'` at EOF would
still auto-insert a closing `'`, even though C disables that pair inside
comments.

The cause was in `language_scope_at` in `buffer.rs`. It walks down the
syntax tree using `Range::contains`, which excludes the end of the
range. At EOF, the cursor offset equals the end of the root node, so
every layer got skipped. The function then fell back to a scope with no
`override_id`, and all `not_in` rules were lost.

The fix lets the tree walk accept the end of a node's range, but only
when the cursor is at the end of the buffer. Behavior everywhere else in
the file is unchanged. Huge thanks to @arixsnow who reported this in
#64820 with clear repro steps and tracked the root cause. This PR
implements the fix they pointed to.


https://github.com/user-attachments/assets/dc3680c0-46f1-4fc1-b80a-973f18398139


## Testing

Ran `cargo test -p language`, all passed. 
The issue #64820 includes directions to reproduce it clearly I used the
same to test the fix.

## Self-review

- [x] I've reviewed my diff for quality, security, reliability, and
performance.
- [x] UI changes follow the
[checklist](https://zed.dev/docs/development/ui-checklist).
- [x] Tests cover the new or changed behavior.

Release Notes:

- Fixed auto-closing brackets being inserted inside comments or strings
at the end of a file.

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
8e7fbcc131rn23thakur committed on 9/30/2026, 8:34:35 PM· committed by GitHubparent0bdc70c
2 files changedLine totals unavailable