Release Notes: - N/A
Unified · Split
| @@ -250,7 +250,7 @@ pub async fn stream_completion( · 249 unmodified lines | ||
| 250 | 250 | .map(|output| output.0) |
| 251 | 251 | } |
| 252 | 252 | |
| 253 | −/// https://docs.anthropic.com/en/api/rate-limits#response-headers | |
| 253 | +/// <https://docs.anthropic.com/en/api/rate-limits#response-headers> | |
| 254 | 254 | #[derive(Debug)] |
| 255 | 255 | pub struct RateLimitInfo { |
| 256 | 256 | pub requests_limit: usize, |
| @@ -626,7 +626,7 @@ pub struct ApiError { · 369 unmodified lines | ||
| 626 | 626 | } |
| 627 | 627 | |
| 628 | 628 | /// An Anthropic API error code. |
| 629 | −/// https://docs.anthropic.com/en/api/errors#http-errors | |
| 629 | +/// <https://docs.anthropic.com/en/api/errors#http-errors> | |
| 630 | 630 | #[derive(Debug, PartialEq, Eq, Clone, Copy, EnumString)] |
| 631 | 631 | #[strum(serialize_all = "snake_case")] |
| 632 | 632 | pub enum ApiErrorCode { |
| @@ -3,7 +3,7 @@ use std::sync::LazyLock; · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | /// Returns whether the given country code is supported by Anthropic. |
| 5 | 5 | /// |
| 6 | −/// https://www.anthropic.com/supported-countries | |
| 6 | +/// <https://www.anthropic.com/supported-countries> | |
| 7 | 7 | pub fn is_supported_country(country_code: &str) -> bool { |
| 8 | 8 | SUPPORTED_COUNTRIES.contains(&country_code) |
| 9 | 9 | } |
| @@ -5,7 +5,7 @@ use assistant_slash_command::{AfterCompletion, SlashCommandLine, SlashCommandWor · 4 unmodified lines | ||
| 5 | 5 | use editor::{CompletionProvider, Editor}; |
| 6 | 6 | use fuzzy::{match_strings, StringMatchCandidate}; |
| 7 | 7 | use gpui::{App, Context, Entity, Task, WeakEntity, Window}; |
| 8 | −use language::{Anchor, Buffer, Documentation, LanguageServerId, ToPoint}; | |
| 8 | +use language::{Anchor, Buffer, CompletionDocumentation, LanguageServerId, ToPoint}; | |
| 9 | 9 | use parking_lot::Mutex; |
| 10 | 10 | use project::CompletionIntent; |
| 11 | 11 | use rope::Point; |
| @@ -120,7 +120,9 @@ impl SlashCommandCompletionProvider { · 108 unmodified lines | ||
| 120 | 120 | }); |
| 121 | 121 | Some(project::Completion { |
| 122 | 122 | old_range: name_range.clone(), |
| 123 | − documentation: Some(Documentation::SingleLine(command.description())), | |
| 123 | + documentation: Some(CompletionDocumentation::SingleLine( | |
| 124 | + command.description(), | |
| 125 | + )), | |
| 124 | 126 | new_text, |
| 125 | 127 | label: command.label(cx), |
| 126 | 128 | server_id: LanguageServerId(0), |
| @@ -434,7 +434,7 @@ pub struct LegacyAssistantSettingsContent { · 433 unmodified lines | ||
| 434 | 434 | pub default_open_ai_model: Option<OpenAiModel>, |
| 435 | 435 | /// OpenAI API base URL to use when creating new chats. |
| 436 | 436 | /// |
| 437 | − /// Default: https://api.openai.com/v1 | |
| 437 | + /// Default: <https://api.openai.com/v1> | |
| 438 | 438 | pub openai_api_url: Option<String>, |
| 439 | 439 | } |
| 440 | 440 | |
| @@ -5,7 +5,7 @@ use gpui::{ · 4 unmodified lines | ||
| 5 | 5 | Size, StrikethroughStyle, StyledText, UniformListScrollHandle, WeakEntity, |
| 6 | 6 | }; |
| 7 | 7 | use language::Buffer; |
| 8 | −use language::{CodeLabel, Documentation}; | |
| 8 | +use language::{CodeLabel, CompletionDocumentation}; | |
| 9 | 9 | use lsp::LanguageServerId; |
| 10 | 10 | use multi_buffer::{Anchor, ExcerptId}; |
| 11 | 11 | use ordered_float::OrderedFloat; |
| @@ -474,7 +474,7 @@ impl CompletionsMenu { · 462 unmodified lines | ||
| 474 | 474 | let documentation = &completion.documentation; |
| 475 | 475 | |
| 476 | 476 | let mut len = completion.label.text.chars().count(); |
| 477 | − if let Some(Documentation::SingleLine(text)) = documentation { | |
| 477 | + if let Some(CompletionDocumentation::SingleLine(text)) = documentation { | |
| 478 | 478 | if show_completion_documentation { |
| 479 | 479 | len += text.chars().count(); |
| 480 | 480 | } |
| @@ -558,7 +558,9 @@ impl CompletionsMenu { · 77 unmodified lines | ||
| 558 | 558 | StyledText::new(completion.label.text.clone()) |
| 559 | 559 | .with_highlights(&style.text, highlights); |
| 560 | 560 | let documentation_label = |
| 561 | − if let Some(Documentation::SingleLine(text)) = documentation { | |
| 561 | + if let Some(CompletionDocumentation::SingleLine(text)) = | |
| 562 | + documentation | |
| 563 | + { | |
| 562 | 564 | if text.trim().is_empty() { |
| 563 | 565 | None |
| 564 | 566 | } else { |
| @@ -710,20 +712,23 @@ impl CompletionsMenu { · 145 unmodified lines | ||
| 710 | 712 | .documentation |
| 711 | 713 | .as_ref()? |
| 712 | 714 | { |
| 713 | − Documentation::MultiLinePlainText(text) => { | |
| 715 | + CompletionDocumentation::MultiLinePlainText(text) => { | |
| 714 | 716 | div().child(SharedString::from(text.clone())) |
| 715 | 717 | } |
| 716 | − Documentation::MultiLineMarkdown(parsed) if !parsed.text.is_empty() => div() | |
| 717 | − .child(render_parsed_markdown( | |
| 718 | + CompletionDocumentation::MultiLineMarkdown(parsed) | |
| 719 | + if !parsed.text.is_empty() => | |
| 720 | + { | |
| 721 | + div().child(render_parsed_markdown( | |
| 718 | 722 | "completions_markdown", |
| 719 | 723 | parsed, |
| 720 | 724 | &style, |
| 721 | 725 | workspace, |
| 722 | 726 | cx, |
| 723 | − )), | |
| 724 | − Documentation::MultiLineMarkdown(_) => return None, | |
| 725 | − Documentation::SingleLine(_) => return None, | |
| 726 | − Documentation::Undocumented => return None, | |
| 727 | + )) | |
| 728 | + } | |
| 729 | + CompletionDocumentation::MultiLineMarkdown(_) => return None, | |
| 730 | + CompletionDocumentation::SingleLine(_) => return None, | |
| 731 | + CompletionDocumentation::Undocumented => return None, | |
| 727 | 732 | } |
| 728 | 733 | } |
| 729 | 734 | CompletionEntry::InlineCompletionHint(InlineCompletionMenuHint::Loaded { text }) => { |
| @@ -96,9 +96,9 @@ use itertools::Itertools; · 95 unmodified lines | ||
| 96 | 96 | use language::{ |
| 97 | 97 | language_settings::{self, all_language_settings, language_settings, InlayHintSettings}, |
| 98 | 98 | markdown, point_from_lsp, AutoindentMode, BracketPair, Buffer, Capability, CharKind, CodeLabel, |
| 99 | − CursorShape, Diagnostic, Documentation, EditPreview, HighlightedText, IndentKind, IndentSize, | |
| 100 | − Language, OffsetRangeExt, Point, Selection, SelectionGoal, TextObject, TransactionId, | |
| 101 | − TreeSitterOptions, | |
| 99 | + CompletionDocumentation, CursorShape, Diagnostic, EditPreview, HighlightedText, IndentKind, | |
| 100 | + IndentSize, Language, OffsetRangeExt, Point, Selection, SelectionGoal, TextObject, | |
| 101 | + TransactionId, TreeSitterOptions, | |
| 102 | 102 | }; |
| 103 | 103 | use language::{point_to_lsp, BufferRow, CharClassifier, Runnable, RunnableRange}; |
| 104 | 104 | use linked_editing_ranges::refresh_linked_ranges; |
| @@ -14723,7 +14723,10 @@ fn snippet_completions( · 14618 unmodified lines | ||
| 14723 | 14723 | filter_range: 0..matching_prefix.len(), |
| 14724 | 14724 | }, |
| 14725 | 14725 | server_id: LanguageServerId(usize::MAX), |
| 14726 | − documentation: snippet.description.clone().map(Documentation::SingleLine), | |
| 14726 | + documentation: snippet | |
| 14727 | + .description | |
| 14728 | + .clone() | |
| 14729 | + .map(CompletionDocumentation::SingleLine), | |
| 14727 | 14730 | lsp_completion: lsp::CompletionItem { |
| 14728 | 14731 | label: snippet.prefix.first().unwrap().clone(), |
| 14729 | 14732 | kind: Some(CompletionItemKind::SNIPPET), |
| @@ -3,7 +3,7 @@ use std::sync::LazyLock; · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | /// Returns whether the given country code is supported by Google Gemini. |
| 5 | 5 | /// |
| 6 | −/// https://ai.google.dev/gemini-api/docs/available-regions | |
| 6 | +/// <https://ai.google.dev/gemini-api/docs/available-regions> | |
| 7 | 7 | pub fn is_supported_country(country_code: &str) -> bool { |
| 8 | 8 | SUPPORTED_COUNTRIES.contains(&country_code) |
| 9 | 9 | } |
| @@ -1418,7 +1418,7 @@ impl App { · 1417 unmodified lines | ||
| 1418 | 1418 | } |
| 1419 | 1419 | |
| 1420 | 1420 | /// Dispatch an action to the currently active window or global action handler |
| 1421 | − /// See [action::Action] for more information on how actions work | |
| 1421 | + /// See [`crate::Action`] for more information on how actions work | |
| 1422 | 1422 | pub fn dispatch_action(&mut self, action: &dyn Action) { |
| 1423 | 1423 | if let Some(active_window) = self.active_window() { |
| 1424 | 1424 | active_window |
| @@ -559,8 +559,8 @@ pub(crate) enum BackgroundTag { · 558 unmodified lines | ||
| 559 | 559 | /// A color space for color interpolation. |
| 560 | 560 | /// |
| 561 | 561 | /// References: |
| 562 | −/// - https://developer.mozilla.org/en-US/docs/Web/CSS/color-interpolation-method | |
| 563 | −/// - https://www.w3.org/TR/css-color-4/#typedef-color-space | |
| 562 | +/// - <https://developer.mozilla.org/en-US/docs/Web/CSS/color-interpolation-method> | |
| 563 | +/// - <https://www.w3.org/TR/css-color-4/#typedef-color-space> | |
| 564 | 564 | #[derive(Debug, Clone, Copy, PartialEq, Default)] |
| 565 | 565 | #[repr(C)] |
| 566 | 566 | pub enum ColorSpace { |
| @@ -622,7 +622,7 @@ pub fn pattern_slash(color: Hsla) -> Background { · 55 unmodified lines | ||
| 622 | 622 | /// |
| 623 | 623 | /// The `angle` is in degrees value in the range 0.0 to 360.0. |
| 624 | 624 | /// |
| 625 | −/// https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient | |
| 625 | +/// <https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient> | |
| 626 | 626 | pub fn linear_gradient( |
| 627 | 627 | angle: f32, |
| 628 | 628 | from: impl Into<LinearColorStop>, |
| @@ -638,7 +638,7 @@ pub fn linear_gradient( · 9 unmodified lines | ||
| 638 | 638 | |
| 639 | 639 | /// A color stop in a linear gradient. |
| 640 | 640 | /// |
| 641 | −/// https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient#linear-color-stop | |
| 641 | +/// <https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient#linear-color-stop> | |
| 642 | 642 | #[derive(Debug, Clone, Copy, Default, PartialEq)] |
| 643 | 643 | #[repr(C)] |
| 644 | 644 | pub struct LinearColorStop { |
| @@ -671,7 +671,7 @@ impl LinearColorStop { · 26 unmodified lines | ||
| 671 | 671 | impl Background { |
| 672 | 672 | /// Use specified color space for color interpolation. |
| 673 | 673 | /// |
| 674 | − /// https://developer.mozilla.org/en-US/docs/Web/CSS/color-interpolation-method | |
| 674 | + /// <https://developer.mozilla.org/en-US/docs/Web/CSS/color-interpolation-method> | |
| 675 | 675 | pub fn color_space(mut self, color_space: ColorSpace) -> Self { |
| 676 | 676 | self.color_space = color_space; |
| 677 | 677 | self |
| @@ -48,10 +48,10 @@ · 47 unmodified lines | ||
| 48 | 48 | //! complex applications: |
| 49 | 49 | //! |
| 50 | 50 | //! - Actions are user-defined structs that are used for converting keystrokes into logical operations in your UI. |
| 51 | −//! Use this for implementing keyboard shortcuts, such as cmd-q. See the [`action`] module for more information. | |
| 51 | +//! Use this for implementing keyboard shortcuts, such as cmd-q (See `action` module for more information). | |
| 52 | 52 | //! - Platform services, such as `quit the app` or `open a URL` are available as methods on the [`app::App`]. |
| 53 | 53 | //! - An async executor that is integrated with the platform's event loop. See the [`executor`] module for more information., |
| 54 | −//! - The [gpui::test] macro provides a convenient way to write tests for your GPUI applications. Tests also have their | |
| 54 | +//! - The [`gpui::test`](test) macro provides a convenient way to write tests for your GPUI applications. Tests also have their | |
| 55 | 55 | //! own kind of context, a [`TestAppContext`] which provides ways of simulating common platform input. See [`app::test_context`] |
| 56 | 56 | //! and [`test`] modules for more details. |
| 57 | 57 | //! |
| @@ -773,7 +773,7 @@ impl crate::Keystroke { · 772 unmodified lines | ||
| 773 | 773 | |
| 774 | 774 | /** |
| 775 | 775 | * Returns which symbol the dead key represents |
| 776 | − * https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values#dead_keycodes_for_linux | |
| 776 | + * <https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values#dead_keycodes_for_linux> | |
| 777 | 777 | */ |
| 778 | 778 | pub fn underlying_dead_key(keysym: Keysym) -> Option<String> { |
| 779 | 779 | match keysym { |
| @@ -16,7 +16,7 @@ impl SharedString { · 15 unmodified lines | ||
| 16 | 16 | Self(ArcCow::Borrowed(str)) |
| 17 | 17 | } |
| 18 | 18 | |
| 19 | − /// Creates a [`SharedString`] from anything that can become an Arc<str> | |
| 19 | + /// Creates a [`SharedString`] from anything that can become an `Arc<str>` | |
| 20 | 20 | pub fn new(str: impl Into<Arc<str>>) -> Self { |
| 21 | 21 | SharedString(ArcCow::Owned(str.into())) |
| 22 | 22 | } |
| @@ -143,7 +143,7 @@ pub fn box_shadow_style_methods(input: TokenStream) -> TokenStream { · 142 unmodified lines | ||
| 143 | 143 | styles::box_shadow_style_methods(input) |
| 144 | 144 | } |
| 145 | 145 | |
| 146 | −/// #[gpui::test] can be used to annotate test functions that run with GPUI support. | |
| 146 | +/// `#[gpui::test]` can be used to annotate test functions that run with GPUI support. | |
| 147 | 147 | /// it supports both synchronous and asynchronous tests, and can provide you with |
| 148 | 148 | /// as many `TestAppContext` instances as you need. |
| 149 | 149 | /// The output contains a `#[test]` annotation so this can be used with any existing |
| @@ -160,7 +160,7 @@ pub fn box_shadow_style_methods(input: TokenStream) -> TokenStream { · 10 unmodified lines | ||
| 160 | 160 | /// Using the same `StdRng` for behavior in your test will allow you to exercise a wide |
| 161 | 161 | /// variety of scenarios and interleavings just by changing the seed. |
| 162 | 162 | /// |
| 163 | −/// #[gpui::test] also takes three different arguments: | |
| 163 | +/// `#[gpui::test]` also takes three different arguments: | |
| 164 | 164 | /// - `#[gpui::test(iterations=10)]` will run the test ten times with a different initial SEED. |
| 165 | 165 | /// - `#[gpui::test(retries=3)]` will run the test up to four times if it fails to try and make it pass. |
| 166 | 166 | /// - `#[gpui::test(on_failure="crate::test::report_failure")]` will call the specified function after the |
| @@ -8,7 +8,7 @@ use bytes::Bytes; · 7 unmodified lines | ||
| 8 | 8 | use futures::AsyncRead; |
| 9 | 9 | |
| 10 | 10 | /// Based on the implementation of AsyncBody in |
| 11 | −/// https://github.com/sagebind/isahc/blob/5c533f1ef4d6bdf1fd291b5103c22110f41d0bf0/src/body/mod.rs | |
| 11 | +/// <https://github.com/sagebind/isahc/blob/5c533f1ef4d6bdf1fd291b5103c22110f41d0bf0/src/body/mod.rs>. | |
| 12 | 12 | pub struct AsyncBody(pub Inner); |
| 13 | 13 | |
| 14 | 14 | pub enum Inner { |
| @@ -236,36 +236,35 @@ pub async fn prepare_completion_documentation( · 235 unmodified lines | ||
| 236 | 236 | documentation: &lsp::Documentation, |
| 237 | 237 | language_registry: &Arc<LanguageRegistry>, |
| 238 | 238 | language: Option<Arc<Language>>, |
| 239 | −) -> Documentation { | |
| 239 | +) -> CompletionDocumentation { | |
| 240 | 240 | match documentation { |
| 241 | 241 | lsp::Documentation::String(text) => { |
| 242 | 242 | if text.lines().count() <= 1 { |
| 243 | − Documentation::SingleLine(text.clone()) | |
| 243 | + CompletionDocumentation::SingleLine(text.clone()) | |
| 244 | 244 | } else { |
| 245 | − Documentation::MultiLinePlainText(text.clone()) | |
| 245 | + CompletionDocumentation::MultiLinePlainText(text.clone()) | |
| 246 | 246 | } |
| 247 | 247 | } |
| 248 | 248 | |
| 249 | 249 | lsp::Documentation::MarkupContent(lsp::MarkupContent { kind, value }) => match kind { |
| 250 | 250 | lsp::MarkupKind::PlainText => { |
| 251 | 251 | if value.lines().count() <= 1 { |
| 252 | − Documentation::SingleLine(value.clone()) | |
| 252 | + CompletionDocumentation::SingleLine(value.clone()) | |
| 253 | 253 | } else { |
| 254 | − Documentation::MultiLinePlainText(value.clone()) | |
| 254 | + CompletionDocumentation::MultiLinePlainText(value.clone()) | |
| 255 | 255 | } |
| 256 | 256 | } |
| 257 | 257 | |
| 258 | 258 | lsp::MarkupKind::Markdown => { |
| 259 | 259 | let parsed = parse_markdown(value, Some(language_registry), language).await; |
| 260 | − Documentation::MultiLineMarkdown(parsed) | |
| 260 | + CompletionDocumentation::MultiLineMarkdown(parsed) | |
| 261 | 261 | } |
| 262 | 262 | }, |
| 263 | 263 | } |
| 264 | 264 | } |
| 265 | 265 | |
| 266 | −/// Documentation associated with a [`Completion`]. | |
| 267 | 266 | #[derive(Clone, Debug)] |
| 268 | −pub enum Documentation { | |
| 267 | +pub enum CompletionDocumentation { | |
| 269 | 268 | /// There is no documentation for this completion. |
| 270 | 269 | Undocumented, |
| 271 | 270 | /// A single line of documentation. |
| @@ -266,7 +266,7 @@ impl std::fmt::Debug for ExcerptInfo { · 265 unmodified lines | ||
| 266 | 266 | } |
| 267 | 267 | } |
| 268 | 268 | |
| 269 | −/// A boundary between [`Excerpt`]s in a [`MultiBuffer`] | |
| 269 | +/// A boundary between `Excerpt`s in a [`MultiBuffer`] | |
| 270 | 270 | #[derive(Debug)] |
| 271 | 271 | pub struct ExcerptBoundary { |
| 272 | 272 | pub prev: Option<ExcerptInfo>, |
| @@ -312,7 +312,7 @@ struct Excerpt { · 39 unmodified lines | ||
| 312 | 312 | has_trailing_newline: bool, |
| 313 | 313 | } |
| 314 | 314 | |
| 315 | −/// A public view into an [`Excerpt`] in a [`MultiBuffer`]. | |
| 315 | +/// A public view into an `Excerpt` in a [`MultiBuffer`]. | |
| 316 | 316 | /// |
| 317 | 317 | /// Contains methods for getting the [`Buffer`] of the excerpt, |
| 318 | 318 | /// as well as mapping offsets to/from buffer and multibuffer coordinates. |
| @@ -332,7 +332,7 @@ struct ExcerptIdMapping { · 13 unmodified lines | ||
| 332 | 332 | locator: Locator, |
| 333 | 333 | } |
| 334 | 334 | |
| 335 | −/// A range of text from a single [`Buffer`], to be shown as an [`Excerpt`]. | |
| 335 | +/// A range of text from a single [`Buffer`], to be shown as an `Excerpt`. | |
| 336 | 336 | /// These ranges are relative to the buffer itself |
| 337 | 337 | #[derive(Clone, Debug, Eq, PartialEq, Hash)] |
| 338 | 338 | pub struct ExcerptRange<T> { |
| @@ -3,7 +3,7 @@ use std::sync::LazyLock; · 2 unmodified lines | ||
| 3 | 3 | |
| 4 | 4 | /// Returns whether the given country code is supported by OpenAI. |
| 5 | 5 | /// |
| 6 | −/// https://platform.openai.com/docs/supported-countries | |
| 6 | +/// <https://platform.openai.com/docs/supported-countries> | |
| 7 | 7 | pub fn is_supported_country(country_code: &str) -> bool { |
| 8 | 8 | SUPPORTED_COUNTRIES.contains(&country_code) |
| 9 | 9 | } |
| @@ -36,7 +36,7 @@ use language::{ · 35 unmodified lines | ||
| 36 | 36 | markdown, point_to_lsp, prepare_completion_documentation, |
| 37 | 37 | proto::{deserialize_anchor, deserialize_version, serialize_anchor, serialize_version}, |
| 38 | 38 | range_from_lsp, range_to_lsp, Bias, Buffer, BufferSnapshot, CachedLspAdapter, CodeLabel, |
| 39 | − Diagnostic, DiagnosticEntry, DiagnosticSet, Diff, Documentation, File as _, Language, | |
| 39 | + CompletionDocumentation, Diagnostic, DiagnosticEntry, DiagnosticSet, Diff, File as _, Language, | |
| 40 | 40 | LanguageName, LanguageRegistry, LanguageServerBinaryStatus, LanguageToolchainStore, LocalFile, |
| 41 | 41 | LspAdapter, LspAdapterDelegate, Patch, PointUtf16, TextBufferSnapshot, ToOffset, ToPointUtf16, |
| 42 | 42 | Transaction, Unclipped, |
| @@ -4359,7 +4359,7 @@ impl LspStore { · 4316 unmodified lines | ||
| 4359 | 4359 | } else { |
| 4360 | 4360 | let mut completions = completions.borrow_mut(); |
| 4361 | 4361 | let completion = &mut completions[completion_index]; |
| 4362 | − completion.documentation = Some(Documentation::Undocumented); | |
| 4362 | + completion.documentation = Some(CompletionDocumentation::Undocumented); | |
| 4363 | 4363 | } |
| 4364 | 4364 | |
| 4365 | 4365 | // NB: Zed does not have `details` inside the completion resolve capabilities, but certain language servers violate the spec and do not return `details` immediately, e.g. https://github.com/yioneko/vtsls/issues/213 |
| @@ -4434,16 +4434,16 @@ impl LspStore { · 68 unmodified lines | ||
| 4434 | 4434 | let lsp_completion = serde_json::from_slice(&response.lsp_completion)?; |
| 4435 | 4435 | |
| 4436 | 4436 | let documentation = if response.documentation.is_empty() { |
| 4437 | − Documentation::Undocumented | |
| 4437 | + CompletionDocumentation::Undocumented | |
| 4438 | 4438 | } else if response.documentation_is_markdown { |
| 4439 | − Documentation::MultiLineMarkdown( | |
| 4439 | + CompletionDocumentation::MultiLineMarkdown( | |
| 4440 | 4440 | markdown::parse_markdown(&response.documentation, Some(&language_registry), None) |
| 4441 | 4441 | .await, |
| 4442 | 4442 | ) |
| 4443 | 4443 | } else if response.documentation.lines().count() <= 1 { |
| 4444 | − Documentation::SingleLine(response.documentation) | |
| 4444 | + CompletionDocumentation::SingleLine(response.documentation) | |
| 4445 | 4445 | } else { |
| 4446 | − Documentation::MultiLinePlainText(response.documentation) | |
| 4446 | + CompletionDocumentation::MultiLinePlainText(response.documentation) | |
| 4447 | 4447 | }; |
| 4448 | 4448 | |
| 4449 | 4449 | let mut completions = completions.borrow_mut(); |
| @@ -56,9 +56,9 @@ use gpui::{ · 55 unmodified lines | ||
| 56 | 56 | use itertools::Itertools; |
| 57 | 57 | use language::{ |
| 58 | 58 | language_settings::InlayHintKind, proto::split_operations, Buffer, BufferEvent, |
| 59 | − CachedLspAdapter, Capability, CodeLabel, Documentation, File as _, Language, LanguageName, | |
| 60 | − LanguageRegistry, PointUtf16, ToOffset, ToPointUtf16, Toolchain, ToolchainList, Transaction, | |
| 61 | − Unclipped, | |
| 59 | + CachedLspAdapter, Capability, CodeLabel, CompletionDocumentation, File as _, Language, | |
| 60 | + LanguageName, LanguageRegistry, PointUtf16, ToOffset, ToPointUtf16, Toolchain, ToolchainList, | |
| 61 | + Transaction, Unclipped, | |
| 62 | 62 | }; |
| 63 | 63 | use lsp::{ |
| 64 | 64 | CodeActionKind, CompletionContext, CompletionItemKind, DocumentHighlightKind, LanguageServer, |
| @@ -368,7 +368,7 @@ pub struct Completion { · 303 unmodified lines | ||
| 368 | 368 | /// The id of the language server that produced this completion. |
| 369 | 369 | pub server_id: LanguageServerId, |
| 370 | 370 | /// The documentation for this completion. |
| 371 | − pub documentation: Option<Documentation>, | |
| 371 | + pub documentation: Option<CompletionDocumentation>, | |
| 372 | 372 | /// The raw completion provided by the language server. |
| 373 | 373 | pub lsp_completion: lsp::CompletionItem, |
| 374 | 374 | /// Whether this completion has been resolved, to ensure it happens once per completion. |
| @@ -53,11 +53,6 @@ pub struct AppVersion; · 52 unmodified lines | ||
| 53 | 53 | |
| 54 | 54 | impl AppVersion { |
| 55 | 55 | /// Initializes the global [`AppVersion`]. |
| 56 | − /// | |
| 57 | − /// Attempts to read the version number from the following locations, in order: | |
| 58 | − /// 1. the `ZED_APP_VERSION` environment variable, | |
| 59 | − /// 2. the [`AppContext::app_metadata`], | |
| 60 | − /// 3. the passed in `pkg_version`. | |
| 61 | 56 | pub fn init(pkg_version: &str) -> SemanticVersion { |
| 62 | 57 | if let Ok(from_env) = env::var("ZED_APP_VERSION") { |
| 63 | 58 | from_env.parse().expect("invalid ZED_APP_VERSION") |
| @@ -139,7 +139,7 @@ impl futures::Stream for StreamReader { · 138 unmodified lines | ||
| 139 | 139 | } |
| 140 | 140 | } |
| 141 | 141 | |
| 142 | −/// Implementation from https://docs.rs/tokio-util/0.7.12/src/tokio_util/util/poll_buf.rs.html | |
| 142 | +/// Implementation from <https://docs.rs/tokio-util/0.7.12/src/tokio_util/util/poll_buf.rs.html> | |
| 143 | 143 | /// Specialized for this use case |
| 144 | 144 | pub fn poll_read_buf( |
| 145 | 145 | io: &mut Pin<Box<dyn futures::AsyncRead + Send + Sync>>, |
| @@ -32,12 +32,13 @@ pub trait Settings: 'static + Send + Sync { · 31 unmodified lines | ||
| 32 | 32 | /// from the root object. |
| 33 | 33 | const KEY: Option<&'static str>; |
| 34 | 34 | |
| 35 | − /// The name of the keys in the [`FileContent`] that should always be written to | |
| 36 | − /// a settings file, even if their value matches the default value. | |
| 35 | + /// The name of the keys in the [`FileContent`](Self::FileContent) that should | |
| 36 | + /// always be written to a settings file, even if their value matches the default | |
| 37 | + /// value. | |
| 37 | 38 | /// |
| 38 | − /// This is useful for tagged [`FileContent`]s where the tag is a "version" field | |
| 39 | − /// that should always be persisted, even if the current user settings match the | |
| 40 | − /// current version of the settings. | |
| 39 | + /// This is useful for tagged [`FileContent`](Self::FileContent)s where the tag | |
| 40 | + /// is a "version" field that should always be persisted, even if the current | |
| 41 | + /// user settings match the current version of the settings. | |
| 41 | 42 | const PRESERVED_KEYS: Option<&'static [&'static str]> = None; |
| 42 | 43 | |
| 43 | 44 | /// The type that is stored in an individual JSON file. |
| @@ -32,7 +32,7 @@ pub trait KeyedItem: Item { · 31 unmodified lines | ||
| 32 | 32 | |
| 33 | 33 | /// A type that describes the Sum of all [`Item`]s in a subtree of the [`SumTree`] |
| 34 | 34 | /// |
| 35 | −/// Each Summary type can have multiple [`Dimensions`] that it measures, | |
| 35 | +/// Each Summary type can have multiple [`Dimension`]s that it measures, | |
| 36 | 36 | /// which can be used to navigate the tree |
| 37 | 37 | pub trait Summary: Clone { |
| 38 | 38 | type Context; |
| @@ -122,7 +122,7 @@ pub struct PathLikeTarget { · 121 unmodified lines | ||
| 122 | 122 | /// A string inside terminal, potentially useful as a URI that can be opened. |
| 123 | 123 | #[derive(Clone, Debug)] |
| 124 | 124 | pub enum MaybeNavigationTarget { |
| 125 | − /// HTTP, git, etc. string determined by the [`URL_REGEX`] regex. | |
| 125 | + /// HTTP, git, etc. string determined by the `URL_REGEX` regex. | |
| 126 | 126 | Url(String), |
| 127 | 127 | /// File system path, absolute or relative, existing or not. |
| 128 | 128 | /// Might have line and column number(s) attached as `file.rs:1:23` |
| @@ -1910,7 +1910,7 @@ fn content_index_for_mouse(pos: Point<Pixels>, size: &TerminalSize) -> usize { · 1781 unmodified lines | ||
| 1910 | 1910 | |
| 1911 | 1911 | /// Converts an 8 bit ANSI color to its GPUI equivalent. |
| 1912 | 1912 | /// Accepts `usize` for compatibility with the `alacritty::Colors` interface, |
| 1913 | −/// Other than that use case, should only be called with values in the [0,255] range | |
| 1913 | +/// Other than that use case, should only be called with values in the `[0,255]` range | |
| 1914 | 1914 | pub fn get_color_at_index(index: usize, theme: &Theme) -> Hsla { |
| 1915 | 1915 | let colors = theme.colors(); |
| 1916 | 1916 | |
| @@ -425,7 +425,7 @@ impl BufferLineHeight { · 424 unmodified lines | ||
| 425 | 425 | } |
| 426 | 426 | |
| 427 | 427 | impl ThemeSettings { |
| 428 | − /// Returns the [AdjustedBufferFontSize]. | |
| 428 | + /// Returns the buffer font size. | |
| 429 | 429 | pub fn buffer_font_size(&self) -> Pixels { |
| 430 | 430 | Self::clamp_font_size(self.buffer_font_size) |
| 431 | 431 | } |
| @@ -349,8 +349,8 @@ impl ButtonCommon for Button { · 348 unmodified lines | ||
| 349 | 349 | /// Sets a tooltip for the button. |
| 350 | 350 | /// |
| 351 | 351 | /// This method allows a tooltip to be set for the button. The tooltip is a function that |
| 352 | − /// takes a mutable reference to a [`WindowContext`] and returns an [`AnyView`]. The tooltip | |
| 353 | − /// is displayed when the user hovers over the button. | |
| 352 | + /// takes a mutable references to [`Window`] and [`App`], and returns an [`AnyView`]. The | |
| 353 | + /// tooltip is displayed when the user hovers over the button. | |
| 354 | 354 | /// |
| 355 | 355 | /// # Examples |
| 356 | 356 | /// |
| @@ -31,7 +31,7 @@ pub struct ContentGroup { · 30 unmodified lines | ||
| 31 | 31 | } |
| 32 | 32 | |
| 33 | 33 | impl ContentGroup { |
| 34 | − /// Creates a new [ContentBox]. | |
| 34 | + /// Creates a new [`ContentGroup`]. | |
| 35 | 35 | pub fn new() -> Self { |
| 36 | 36 | Self { |
| 37 | 37 | base: div(), |
| @@ -41,13 +41,13 @@ impl ContentGroup { · 3 unmodified lines | ||
| 41 | 41 | } |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | − /// Removes the border from the [ContentBox]. | |
| 44 | + /// Removes the border from the [`ContentGroup`]. | |
| 45 | 45 | pub fn borderless(mut self) -> Self { |
| 46 | 46 | self.border = false; |
| 47 | 47 | self |
| 48 | 48 | } |
| 49 | 49 | |
| 50 | − /// Removes the background fill from the [ContentBox]. | |
| 50 | + /// Removes the background fill from the [`ContentGroup`]. | |
| 51 | 51 | pub fn unfilled(mut self) -> Self { |
| 52 | 52 | self.fill = false; |
| 53 | 53 | self |
| @@ -28,7 +28,7 @@ pub enum VectorName { · 27 unmodified lines | ||
| 28 | 28 | |
| 29 | 29 | /// A vector image, such as an SVG. |
| 30 | 30 | /// |
| 31 | −/// A [`Vector`] is different from an [`Icon`] in that it is intended | |
| 31 | +/// A [`Vector`] is different from an [`crate::Icon`] in that it is intended | |
| 32 | 32 | /// to be displayed at a specific size, or series of sizes, rather |
| 33 | 33 | /// than conforming to the standard size of an icon. |
| 34 | 34 | #[derive(IntoElement)] |
| @@ -42,8 +42,9 @@ impl Navigable { · 41 unmodified lines | ||
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | /// Add a new entry that can be navigated to via keyboard. |
| 45 | − /// The order of calls to [Navigable::entry] determines the order of traversal of elements via successive | |
| 46 | − /// uses of [menu:::SelectNext]/[menu::SelectPrev] | |
| 45 | + /// | |
| 46 | + /// The order of calls to [Navigable::entry] determines the order of traversal of | |
| 47 | + /// elements via successive uses of `menu:::SelectNext/SelectPrev` | |
| 47 | 48 | pub fn entry(mut self, child: NavigableEntry) -> Self { |
| 48 | 49 | self.selectable_children.push(child); |
| 49 | 50 | self |
| @@ -59,6 +60,7 @@ impl Navigable { · 9 unmodified lines | ||
| 59 | 60 | .position(|entry| entry.focus_handle.contains_focused(window, cx)) |
| 60 | 61 | } |
| 61 | 62 | } |
| 63 | + | |
| 62 | 64 | impl RenderOnce for Navigable { |
| 63 | 65 | fn render(self, _window: &mut Window, _: &mut App) -> impl crate::IntoElement { |
| 64 | 66 | div() |
| @@ -5,6 +5,8 @@ use std::sync::Arc; · 4 unmodified lines | ||
| 5 | 5 | use crate::prelude::*; |
| 6 | 6 | |
| 7 | 7 | /// A [`Checkbox`] that has a [`Label`]. |
| 8 | +/// | |
| 9 | +/// [`Checkbox`]: crate::components::Checkbox | |
| 8 | 10 | #[derive(IntoElement)] |
| 9 | 11 | pub struct RadioWithLabel { |
| 10 | 12 | id: ElementId, |
| @@ -22,7 +22,7 @@ pub enum ElevationIndex { · 21 unmodified lines | ||
| 22 | 22 | EditorSurface, |
| 23 | 23 | /// A surface that is elevated above the primary surface. but below washes, models, and dragged elements. |
| 24 | 24 | ElevatedSurface, |
| 25 | − /// A surface above the [ElevationIndex::Wash] that is used for dialogs, alerts, modals, etc. | |
| 25 | + /// A surface above the [ElevationIndex::ElevatedSurface] that is used for dialogs, alerts, modals, etc. | |
| 26 | 26 | ModalSurface, |
| 27 | 27 | } |
| 28 | 28 | |
| @@ -24,7 +24,7 @@ pub trait StyledTypography: Styled + Sized { · 23 unmodified lines | ||
| 24 | 24 | self.font_family(ui_font_family) |
| 25 | 25 | } |
| 26 | 26 | |
| 27 | − /// Sets the text size using a [`UiTextSize`]. | |
| 27 | + /// Sets the text size using a [`TextSize`]. | |
| 28 | 28 | fn text_ui_size(self, size: TextSize, cx: &App) -> Self { |
| 29 | 29 | self.text_size(size.rems(cx)) |
| 30 | 30 | } |
| @@ -42,9 +42,9 @@ pub trait StyledExt: Styled + Sized { · 41 unmodified lines | ||
| 42 | 42 | elevated(self, cx, ElevationIndex::Surface) |
| 43 | 43 | } |
| 44 | 44 | |
| 45 | − /// See [`elevation_1`]. | |
| 45 | + /// See [`elevation_1`](Self::elevation_1). | |
| 46 | 46 | /// |
| 47 | − /// Renders a borderless version [`elevation_1`]. | |
| 47 | + /// Renders a borderless version [`elevation_1`](Self::elevation_1). | |
| 48 | 48 | fn elevation_1_borderless(self, cx: &mut App) -> Self { |
| 49 | 49 | elevated_borderless(self, cx, ElevationIndex::Surface) |
| 50 | 50 | } |
| @@ -58,9 +58,9 @@ pub trait StyledExt: Styled + Sized { · 7 unmodified lines | ||
| 58 | 58 | elevated(self, cx, ElevationIndex::ElevatedSurface) |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | − /// See [`elevation_2`]. | |
| 61 | + /// See [`elevation_2`](Self::elevation_2). | |
| 62 | 62 | /// |
| 63 | − /// Renders a borderless version [`elevation_2`]. | |
| 63 | + /// Renders a borderless version [`elevation_2`](Self::elevation_2). | |
| 64 | 64 | fn elevation_2_borderless(self, cx: &mut App) -> Self { |
| 65 | 65 | elevated_borderless(self, cx, ElevationIndex::ElevatedSurface) |
| 66 | 66 | } |
| @@ -78,9 +78,9 @@ pub trait StyledExt: Styled + Sized { · 11 unmodified lines | ||
| 78 | 78 | elevated(self, cx, ElevationIndex::ModalSurface) |
| 79 | 79 | } |
| 80 | 80 | |
| 81 | − /// See [`elevation_3`]. | |
| 81 | + /// See [`elevation_3`](Self::elevation_3). | |
| 82 | 82 | /// |
| 83 | − /// Renders a borderless version [`elevation_3`]. | |
| 83 | + /// Renders a borderless version [`elevation_3`](Self::elevation_3). | |
| 84 | 84 | fn elevation_3_borderless(self, cx: &mut App) -> Self { |
| 85 | 85 | elevated_borderless(self, cx, ElevationIndex::ModalSurface) |
| 86 | 86 | } |
| @@ -7,8 +7,7 @@ · 6 unmodified lines | ||
| 7 | 7 | //! ## Related Crates: |
| 8 | 8 | //! |
| 9 | 9 | //! - [`ui_macros`] - proc_macros support for this crate |
| 10 | −//! - [`ui_input`] - the single line input component | |
| 11 | −//! | |
| 10 | +//! - `ui_input` - the single line input component | |
| 12 | 11 | |
| 13 | 12 | mod components; |
| 14 | 13 | pub mod prelude; |
| @@ -22,6 +22,8 @@ impl WithRemSize { · 21 unmodified lines | ||
| 22 | 22 | |
| 23 | 23 | /// Block the mouse from interacting with this element or any of its children |
| 24 | 24 | /// The fluent API equivalent to [`Interactivity::occlude_mouse`] |
| 25 | + /// | |
| 26 | + /// [`Interactivity::occlude_mouse`]: gpui::Interactivity::occlude_mouse | |
| 25 | 27 | pub fn occlude(mut self) -> Self { |
| 26 | 28 | self.div = self.div.occlude(); |
| 27 | 29 | self |