extension_api: Expose preferred_line_length in LanguageSettings (#52175)

Roman Cinis created

Closes #21822

## Context

Exposes `preferred_line_length` from `AllLanguageSettings` to the
Extension
API's `LanguageSettings` struct. Currently only `tab_size` is available
to
extensions, which prevents language extensions (e.g. Dart) from reading
the
user's preferred line length and forwarding it to their language server
(e.g. as `dart.lineLength`).

Related: https://github.com/zed-extensions/dart/issues/2

## How to Review

Small change — follow how `tab_size` is plumbed through:
1. WIT definition (`language-settings` record)
2. `extension_api` Rust struct
3. Host-side bridge conversion

The new field follows the exact same pattern.

## Self-Review Checklist

<!-- Check before requesting review: -->
- [x] I've reviewed my own diff for quality, security, and reliability
- [ ] Unsafe blocks (if any) have justifying comments
- [x] The content is consistent with the [UI/UX
checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
- [x] Tests cover the new/changed behavior
  - Compile-time verified via WIT bindings; no runtime behavior change
- [x] Performance impact has been considered and is acceptable

Release Notes:

- N/A

Change summary

crates/extension_api/src/settings.rs                    | 2 +-
crates/extension_api/wit/since_v0.8.0/settings.rs       | 2 ++
crates/extension_host/src/wasm_host/wit/since_v0_8_0.rs | 1 +
3 files changed, 4 insertions(+), 1 deletion(-)

Detailed changes

crates/extension_api/src/settings.rs 🔗

@@ -1,6 +1,6 @@
 //! Provides access to Zed settings.
 
-#[path = "../wit/since_v0.2.0/settings.rs"]
+#[path = "../wit/since_v0.8.0/settings.rs"]
 mod types;
 
 use crate::{Project, Result, SettingsLocation, Worktree, wit};

crates/extension_api/wit/since_v0.8.0/settings.rs 🔗

@@ -6,6 +6,8 @@ use std::{collections::HashMap, num::NonZeroU32};
 pub struct LanguageSettings {
     /// How many columns a tab should occupy.
     pub tab_size: NonZeroU32,
+    /// The preferred line length (column at which to wrap).
+    pub preferred_line_length: u32,
 }
 
 /// The settings for a particular language server.