mirror of
https://github.com/ilyakooo0/helix.git
synced 2024-12-01 03:15:33 +03:00
Fix typos (#6643)
This commit is contained in:
parent
1148ce1fd9
commit
e856906f76
@ -109,7 +109,7 @@ pub fn visual_coords_at_pos(text: RopeSlice, pos: usize, tab_width: usize) -> Po
|
||||
/// softwrapping positions are estimated with an O(1) algorithm
|
||||
/// to ensure consistent performance for large lines (currently unimplemented)
|
||||
///
|
||||
/// Usualy you want to use `visual_offset_from_anchor` instead but this function
|
||||
/// Usually you want to use `visual_offset_from_anchor` instead but this function
|
||||
/// can be useful (and faster) if
|
||||
/// * You already know the visual position of the block
|
||||
/// * You only care about the horizontal offset (column) and not the vertical offset (row)
|
||||
@ -291,7 +291,7 @@ pub fn pos_at_visual_coords(text: RopeSlice, coords: Position, tab_width: usize)
|
||||
///
|
||||
/// If no (text) grapheme starts at exactly at the specified column the
|
||||
/// start of the grapheme to the left is returned. If there is no grapheme
|
||||
/// to the left (for example if the line starts with virtual text) then the positiong
|
||||
/// to the left (for example if the line starts with virtual text) then the positioning
|
||||
/// of the next grapheme to the right is returned.
|
||||
///
|
||||
/// If the `line` coordinate is beyond the end of the file, the EOF
|
||||
|
@ -38,7 +38,7 @@ use std::borrow::Cow;
|
||||
/// Ranges are considered to be inclusive on the left and
|
||||
/// exclusive on the right, regardless of anchor-head ordering.
|
||||
/// This means, for example, that non-zero-width ranges that
|
||||
/// are directly adjecent, sharing an edge, do not overlap.
|
||||
/// are directly adjacent, sharing an edge, do not overlap.
|
||||
/// However, a zero-width range will overlap with the shared
|
||||
/// left-edge of another range.
|
||||
///
|
||||
|
@ -294,14 +294,14 @@ mod test {
|
||||
#[test]
|
||||
fn test_lists() {
|
||||
let input =
|
||||
r#":set statusline.center ["file-type","file-encoding"] '["list", "in", "qoutes"]'"#;
|
||||
r#":set statusline.center ["file-type","file-encoding"] '["list", "in", "quotes"]'"#;
|
||||
let shellwords = Shellwords::from(input);
|
||||
let result = shellwords.words().to_vec();
|
||||
let expected = vec![
|
||||
Cow::from(":set"),
|
||||
Cow::from("statusline.center"),
|
||||
Cow::from(r#"["file-type","file-encoding"]"#),
|
||||
Cow::from(r#"["list", "in", "qoutes"]"#),
|
||||
Cow::from(r#"["list", "in", "quotes"]"#),
|
||||
];
|
||||
assert_eq!(expected, result);
|
||||
}
|
||||
|
@ -172,7 +172,7 @@ impl TextAnnotations {
|
||||
for char_idx in char_range {
|
||||
if let Some((_, Some(highlight))) = self.overlay_at(char_idx) {
|
||||
// we don't know the number of chars the original grapheme takes
|
||||
// however it doesn't matter as highlight bounderies are automatically
|
||||
// however it doesn't matter as highlight boundaries are automatically
|
||||
// aligned to grapheme boundaries in the rendering code
|
||||
highlights.push((highlight.0, char_idx..char_idx + 1))
|
||||
}
|
||||
@ -203,7 +203,7 @@ impl TextAnnotations {
|
||||
|
||||
/// Add new grapheme overlays.
|
||||
///
|
||||
/// The overlayed grapheme will be rendered with `highlight`
|
||||
/// The overlaid grapheme will be rendered with `highlight`
|
||||
/// patched on top of `ui.text`.
|
||||
///
|
||||
/// The overlays **must be sorted** by their `char_idx`.
|
||||
|
@ -52,8 +52,8 @@ pub struct Client {
|
||||
root_path: std::path::PathBuf,
|
||||
root_uri: Option<lsp::Url>,
|
||||
workspace_folders: Mutex<Vec<lsp::WorkspaceFolder>>,
|
||||
initalize_notify: Arc<Notify>,
|
||||
/// workspace folders added while the server is still initalizing
|
||||
initialize_notify: Arc<Notify>,
|
||||
/// workspace folders added while the server is still initializing
|
||||
req_timeout: u64,
|
||||
}
|
||||
|
||||
@ -92,14 +92,14 @@ impl Client {
|
||||
return true;
|
||||
}
|
||||
|
||||
// this server definitly doesn't support multiple workspace, no need to check capabilities
|
||||
// this server definitely doesn't support multiple workspace, no need to check capabilities
|
||||
if !may_support_workspace {
|
||||
return false;
|
||||
}
|
||||
|
||||
let Some(capabilities) = self.capabilities.get() else {
|
||||
let client = Arc::clone(self);
|
||||
// initalization hasn't finished yet, deal with this new root later
|
||||
// initialization hasn't finished yet, deal with this new root later
|
||||
// TODO: In the edgecase that a **new root** is added
|
||||
// for an LSP that **doesn't support workspace_folders** before initaliation is finished
|
||||
// the new roots are ignored.
|
||||
@ -108,7 +108,7 @@ impl Client {
|
||||
// documents LSP client handle. It's doable but a pretty weird edgecase so let's
|
||||
// wait and see if anyone ever runs into it.
|
||||
tokio::spawn(async move {
|
||||
client.initalize_notify.notified().await;
|
||||
client.initialize_notify.notified().await;
|
||||
if let Some(workspace_folders_caps) = client
|
||||
.capabilities()
|
||||
.workspace
|
||||
@ -234,7 +234,7 @@ impl Client {
|
||||
root_path,
|
||||
root_uri,
|
||||
workspace_folders: Mutex::new(workspace_folders),
|
||||
initalize_notify: initialize_notify.clone(),
|
||||
initialize_notify: initialize_notify.clone(),
|
||||
};
|
||||
|
||||
Ok((client, server_rx, initialize_notify))
|
||||
@ -279,7 +279,7 @@ impl Client {
|
||||
"utf-16" => Some(OffsetEncoding::Utf16),
|
||||
"utf-32" => Some(OffsetEncoding::Utf32),
|
||||
encoding => {
|
||||
log::error!("Server provided invalid position encording {encoding}, defaulting to utf-16");
|
||||
log::error!("Server provided invalid position encoding {encoding}, defaulting to utf-16");
|
||||
None
|
||||
},
|
||||
})
|
||||
|
@ -152,10 +152,10 @@ pub mod util {
|
||||
// > ‘\n’, ‘\r\n’ and ‘\r’. Positions are line end character agnostic.
|
||||
// > So you can not specify a position that denotes \r|\n or \n| where | represents the character offset.
|
||||
//
|
||||
// This means that while the line must be in bounds the `charater`
|
||||
// This means that while the line must be in bounds the `character`
|
||||
// must be capped to the end of the line.
|
||||
// Note that the end of the line here is **before** the line terminator
|
||||
// so we must use `line_end_char_index` istead of `doc.line_to_char(pos_line + 1)`
|
||||
// so we must use `line_end_char_index` instead of `doc.line_to_char(pos_line + 1)`
|
||||
//
|
||||
// FIXME: Helix does not fully comply with the LSP spec for line terminators.
|
||||
// The LSP standard requires that line terminators are ['\n', '\r\n', '\r'].
|
||||
@ -893,7 +893,7 @@ fn start_client(
|
||||
/// * if the file is outside `workspace` return `None`
|
||||
/// * start at `file` and search the file tree upward
|
||||
/// * stop the search at the first `root_dirs` entry that contains `file`
|
||||
/// * if no `root_dirs` matchs `file` stop at workspace
|
||||
/// * if no `root_dirs` matches `file` stop at workspace
|
||||
/// * Returns the top most directory that contains a `root_marker`
|
||||
/// * If no root marker and we stopped at a `root_dirs` entry, return the directory we stopped at
|
||||
/// * If we stopped at `workspace` instead and `workspace_is_cwd == false` return `None`
|
||||
|
@ -61,7 +61,7 @@ fn render_elements(
|
||||
offset: &mut usize,
|
||||
tabstops: &mut Vec<(usize, (usize, usize))>,
|
||||
newline_with_offset: &str,
|
||||
include_placeholer: bool,
|
||||
include_placeholder: bool,
|
||||
) {
|
||||
use SnippetElement::*;
|
||||
|
||||
@ -89,7 +89,7 @@ fn render_elements(
|
||||
offset,
|
||||
tabstops,
|
||||
newline_with_offset,
|
||||
include_placeholer,
|
||||
include_placeholder,
|
||||
);
|
||||
}
|
||||
&Tabstop { tabstop } => {
|
||||
@ -100,14 +100,14 @@ fn render_elements(
|
||||
value: inner_snippet_elements,
|
||||
} => {
|
||||
let start_offset = *offset;
|
||||
if include_placeholer {
|
||||
if include_placeholder {
|
||||
render_elements(
|
||||
inner_snippet_elements,
|
||||
insert,
|
||||
offset,
|
||||
tabstops,
|
||||
newline_with_offset,
|
||||
include_placeholer,
|
||||
include_placeholder,
|
||||
);
|
||||
}
|
||||
tabstops.push((*tabstop, (start_offset, *offset)));
|
||||
@ -127,7 +127,7 @@ fn render_elements(
|
||||
pub fn render(
|
||||
snippet: &Snippet<'_>,
|
||||
newline_with_offset: &str,
|
||||
include_placeholer: bool,
|
||||
include_placeholder: bool,
|
||||
) -> (Tendril, Vec<SmallVec<[(usize, usize); 1]>>) {
|
||||
let mut insert = Tendril::new();
|
||||
let mut tabstops = Vec::new();
|
||||
@ -139,7 +139,7 @@ pub fn render(
|
||||
&mut offset,
|
||||
&mut tabstops,
|
||||
newline_with_offset,
|
||||
include_placeholer,
|
||||
include_placeholder,
|
||||
);
|
||||
|
||||
// sort in ascending order (except for 0, which should always be the last one (per lsp doc))
|
||||
|
@ -25,7 +25,7 @@ use crate::{
|
||||
config::Config,
|
||||
job::Jobs,
|
||||
keymap::Keymaps,
|
||||
ui::{self, overlay::overlayed},
|
||||
ui::{self, overlay::overlaid},
|
||||
};
|
||||
|
||||
use log::{debug, error, warn};
|
||||
@ -169,7 +169,7 @@ impl Application {
|
||||
std::env::set_current_dir(first).context("set current dir")?;
|
||||
editor.new_file(Action::VerticalSplit);
|
||||
let picker = ui::file_picker(".".into(), &config.load().editor);
|
||||
compositor.push(Box::new(overlayed(picker)));
|
||||
compositor.push(Box::new(overlaid(picker)));
|
||||
} else {
|
||||
let nr_of_files = args.files.len();
|
||||
for (i, (file, pos)) in args.files.into_iter().enumerate() {
|
||||
|
@ -54,7 +54,7 @@ use crate::{
|
||||
job::Callback,
|
||||
keymap::ReverseKeymap,
|
||||
ui::{
|
||||
self, editor::InsertEvent, lsp::SignatureHelp, overlay::overlayed, FilePicker, Picker,
|
||||
self, editor::InsertEvent, lsp::SignatureHelp, overlay::overlaid, FilePicker, Picker,
|
||||
Popup, Prompt, PromptEvent,
|
||||
},
|
||||
};
|
||||
@ -1561,7 +1561,7 @@ fn half_page_down(cx: &mut Context) {
|
||||
}
|
||||
|
||||
#[allow(deprecated)]
|
||||
// currently uses the deprected `visual_coords_at_pos`/`pos_at_visual_coords` functions
|
||||
// currently uses the deprecated `visual_coords_at_pos`/`pos_at_visual_coords` functions
|
||||
// as this function ignores softwrapping (and virtual text) and instead only cares
|
||||
// about "text visual position"
|
||||
//
|
||||
@ -2147,7 +2147,7 @@ fn global_search(cx: &mut Context) {
|
||||
Some((path.clone().into(), Some((*line_num, *line_num))))
|
||||
},
|
||||
);
|
||||
compositor.push(Box::new(overlayed(picker)));
|
||||
compositor.push(Box::new(overlaid(picker)));
|
||||
},
|
||||
));
|
||||
Ok(call)
|
||||
@ -2421,7 +2421,7 @@ fn append_mode(cx: &mut Context) {
|
||||
fn file_picker(cx: &mut Context) {
|
||||
let root = find_workspace().0;
|
||||
let picker = ui::file_picker(root, &cx.editor.config());
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
|
||||
fn file_picker_in_current_buffer_directory(cx: &mut Context) {
|
||||
@ -2438,12 +2438,12 @@ fn file_picker_in_current_buffer_directory(cx: &mut Context) {
|
||||
};
|
||||
|
||||
let picker = ui::file_picker(path, &cx.editor.config());
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
fn file_picker_in_current_directory(cx: &mut Context) {
|
||||
let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./"));
|
||||
let picker = ui::file_picker(cwd, &cx.editor.config());
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
|
||||
fn buffer_picker(cx: &mut Context) {
|
||||
@ -2508,7 +2508,7 @@ fn buffer_picker(cx: &mut Context) {
|
||||
Some((meta.id.into(), Some((line, line))))
|
||||
},
|
||||
);
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
|
||||
fn jumplist_picker(cx: &mut Context) {
|
||||
@ -2590,7 +2590,7 @@ fn jumplist_picker(cx: &mut Context) {
|
||||
Some((meta.path.clone()?.into(), Some((line, line))))
|
||||
},
|
||||
);
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
|
||||
impl ui::menu::Item for MappableCommand {
|
||||
@ -2664,7 +2664,7 @@ pub fn command_palette(cx: &mut Context) {
|
||||
}
|
||||
}
|
||||
});
|
||||
compositor.push(Box::new(overlayed(picker)));
|
||||
compositor.push(Box::new(overlaid(picker)));
|
||||
},
|
||||
));
|
||||
}
|
||||
@ -4185,7 +4185,7 @@ pub fn completion(cx: &mut Context) {
|
||||
None => return,
|
||||
};
|
||||
|
||||
// setup a chanel that allows the request to be canceled
|
||||
// setup a channel that allows the request to be canceled
|
||||
let (tx, rx) = oneshot::channel();
|
||||
// set completion_request so that this request can be canceled
|
||||
// by setting completion_request, the old channel stored there is dropped
|
||||
@ -4238,7 +4238,7 @@ pub fn completion(cx: &mut Context) {
|
||||
let (view, doc) = current_ref!(editor);
|
||||
// check if the completion request is stale.
|
||||
//
|
||||
// Completions are completed asynchrounsly and therefore the user could
|
||||
// Completions are completed asynchronously and therefore the user could
|
||||
//switch document/view or leave insert mode. In all of thoise cases the
|
||||
// completion should be discarded
|
||||
if editor.mode != Mode::Insert || view.id != trigger_view || doc.id() != trigger_doc {
|
||||
|
@ -2,7 +2,7 @@ use super::{Context, Editor};
|
||||
use crate::{
|
||||
compositor::{self, Compositor},
|
||||
job::{Callback, Jobs},
|
||||
ui::{self, overlay::overlayed, FilePicker, Picker, Popup, Prompt, PromptEvent, Text},
|
||||
ui::{self, overlay::overlaid, FilePicker, Picker, Popup, Prompt, PromptEvent, Text},
|
||||
};
|
||||
use dap::{StackFrame, Thread, ThreadStates};
|
||||
use helix_core::syntax::{DebugArgumentValue, DebugConfigCompletion, DebugTemplate};
|
||||
@ -270,7 +270,7 @@ pub fn dap_launch(cx: &mut Context) {
|
||||
|
||||
let templates = config.templates.clone();
|
||||
|
||||
cx.push_layer(Box::new(overlayed(Picker::new(
|
||||
cx.push_layer(Box::new(overlaid(Picker::new(
|
||||
templates,
|
||||
(),
|
||||
|cx, template, _action| {
|
||||
|
@ -26,7 +26,7 @@ use helix_view::{
|
||||
use crate::{
|
||||
compositor::{self, Compositor},
|
||||
ui::{
|
||||
self, lsp::SignatureHelp, overlay::overlayed, DynamicPicker, FileLocation, FilePicker,
|
||||
self, lsp::SignatureHelp, overlay::overlaid, DynamicPicker, FileLocation, FilePicker,
|
||||
Popup, PromptEvent,
|
||||
},
|
||||
};
|
||||
@ -372,7 +372,7 @@ pub fn symbol_picker(cx: &mut Context) {
|
||||
};
|
||||
|
||||
let picker = sym_picker(symbols, current_url, offset_encoding);
|
||||
compositor.push(Box::new(overlayed(picker)))
|
||||
compositor.push(Box::new(overlaid(picker)))
|
||||
}
|
||||
},
|
||||
)
|
||||
@ -431,7 +431,7 @@ pub fn workspace_symbol_picker(cx: &mut Context) {
|
||||
future.boxed()
|
||||
};
|
||||
let dyn_picker = DynamicPicker::new(picker, Box::new(get_symbols));
|
||||
compositor.push(Box::new(overlayed(dyn_picker)))
|
||||
compositor.push(Box::new(overlaid(dyn_picker)))
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -454,7 +454,7 @@ pub fn diagnostics_picker(cx: &mut Context) {
|
||||
DiagnosticsFormat::HideSourcePath,
|
||||
offset_encoding,
|
||||
);
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -471,7 +471,7 @@ pub fn workspace_diagnostics_picker(cx: &mut Context) {
|
||||
DiagnosticsFormat::ShowSourcePath,
|
||||
offset_encoding,
|
||||
);
|
||||
cx.push_layer(Box::new(overlayed(picker)));
|
||||
cx.push_layer(Box::new(overlaid(picker)));
|
||||
}
|
||||
|
||||
impl ui::menu::Item for lsp::CodeActionOrCommand {
|
||||
@ -491,7 +491,7 @@ impl ui::menu::Item for lsp::CodeActionOrCommand {
|
||||
///
|
||||
/// While the `kind` field is defined as open ended in the LSP spec (any value may be used)
|
||||
/// in practice a closed set of common values (mostly suggested in the LSP spec) are used.
|
||||
/// VSCode displays each of these categories seperatly (seperated by a heading in the codeactions picker)
|
||||
/// VSCode displays each of these categories separately (separated by a heading in the codeactions picker)
|
||||
/// to make them easier to navigate. Helix does not display these headings to the user.
|
||||
/// However it does sort code actions by their categories to achieve the same order as the VScode picker,
|
||||
/// just without the headings.
|
||||
@ -521,7 +521,7 @@ fn action_category(action: &CodeActionOrCommand) -> u32 {
|
||||
}
|
||||
}
|
||||
|
||||
fn action_prefered(action: &CodeActionOrCommand) -> bool {
|
||||
fn action_preferred(action: &CodeActionOrCommand) -> bool {
|
||||
matches!(
|
||||
action,
|
||||
CodeActionOrCommand::CodeAction(CodeAction {
|
||||
@ -600,12 +600,12 @@ pub fn code_action(cx: &mut Context) {
|
||||
}
|
||||
|
||||
// Sort codeactions into a useful order. This behaviour is only partially described in the LSP spec.
|
||||
// Many details are modeled after vscode because langauge servers are usually tested against it.
|
||||
// Many details are modeled after vscode because language servers are usually tested against it.
|
||||
// VScode sorts the codeaction two times:
|
||||
//
|
||||
// First the codeactions that fix some diagnostics are moved to the front.
|
||||
// If both codeactions fix some diagnostics (or both fix none) the codeaction
|
||||
// that is marked with `is_preffered` is shown first. The codeactions are then shown in seperate
|
||||
// that is marked with `is_preferred` is shown first. The codeactions are then shown in separate
|
||||
// submenus that only contain a certain category (see `action_category`) of actions.
|
||||
//
|
||||
// Below this done in in a single sorting step
|
||||
@ -627,10 +627,10 @@ pub fn code_action(cx: &mut Context) {
|
||||
return order;
|
||||
}
|
||||
|
||||
// if one of the codeactions is marked as prefered show it first
|
||||
// if one of the codeactions is marked as preferred show it first
|
||||
// otherwise keep the original LSP sorting
|
||||
action_prefered(action1)
|
||||
.cmp(&action_prefered(action2))
|
||||
action_preferred(action1)
|
||||
.cmp(&action_preferred(action2))
|
||||
.reverse()
|
||||
});
|
||||
|
||||
@ -955,7 +955,7 @@ fn goto_impl(
|
||||
},
|
||||
move |_editor, location| Some(location_to_file_location(location)),
|
||||
);
|
||||
compositor.push(Box::new(overlayed(picker)));
|
||||
compositor.push(Box::new(overlaid(picker)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ fn open(cx: &mut compositor::Context, args: &[Cow<str>], event: PromptEvent) ->
|
||||
let call: job::Callback = job::Callback::EditorCompositor(Box::new(
|
||||
move |editor: &mut Editor, compositor: &mut Compositor| {
|
||||
let picker = ui::file_picker(path, &editor.config());
|
||||
compositor.push(Box::new(overlayed(picker)));
|
||||
compositor.push(Box::new(overlaid(picker)));
|
||||
},
|
||||
));
|
||||
Ok(call)
|
||||
@ -1335,7 +1335,7 @@ fn lsp_workspace_command(
|
||||
let picker = ui::Picker::new(commands, (), |cx, command, _action| {
|
||||
execute_lsp_command(cx.editor, command.clone());
|
||||
});
|
||||
compositor.push(Box::new(overlayed(picker)))
|
||||
compositor.push(Box::new(overlaid(picker)))
|
||||
},
|
||||
));
|
||||
Ok(call)
|
||||
|
@ -118,7 +118,7 @@ pub fn render_document(
|
||||
|
||||
fn translate_positions(
|
||||
char_pos: usize,
|
||||
first_visisble_char_idx: usize,
|
||||
first_visible_char_idx: usize,
|
||||
translated_positions: &mut [TranslatedPosition],
|
||||
text_fmt: &TextFormat,
|
||||
renderer: &mut TextRenderer,
|
||||
@ -126,7 +126,7 @@ fn translate_positions(
|
||||
) {
|
||||
// check if any positions translated on the fly (like cursor) has been reached
|
||||
for (char_idx, callback) in &mut *translated_positions {
|
||||
if *char_idx < char_pos && *char_idx >= first_visisble_char_idx {
|
||||
if *char_idx < char_pos && *char_idx >= first_visible_char_idx {
|
||||
// by replacing the char_index with usize::MAX large number we ensure
|
||||
// that the same position is only translated once
|
||||
// text will never reach usize::MAX as rust memory allocations are limited
|
||||
@ -259,7 +259,7 @@ pub fn render_text<'t>(
|
||||
}
|
||||
}
|
||||
|
||||
// aquire the correct grapheme style
|
||||
// acquire the correct grapheme style
|
||||
if char_pos >= style_span.1 {
|
||||
style_span = styles.next().unwrap_or((Style::default(), usize::MAX));
|
||||
}
|
||||
@ -404,7 +404,7 @@ impl<'a> TextRenderer<'a> {
|
||||
let cut_off_start = self.col_offset.saturating_sub(position.col);
|
||||
let is_whitespace = grapheme.is_whitespace();
|
||||
|
||||
// TODO is it correct to apply the whitspace style to all unicode white spaces?
|
||||
// TODO is it correct to apply the whitespace style to all unicode white spaces?
|
||||
if is_whitespace {
|
||||
style = style.patch(self.whitespace_style);
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ impl QueryAtom {
|
||||
}
|
||||
|
||||
fn indices(&self, matcher: &Matcher, item: &str, indices: &mut Vec<usize>) -> bool {
|
||||
// for inverse there are no indicies to return
|
||||
// for inverse there are no indices to return
|
||||
// just return whether we matched
|
||||
if self.inverse {
|
||||
return self.matches(matcher, item);
|
||||
@ -120,7 +120,7 @@ enum QueryAtomKind {
|
||||
///
|
||||
/// Usage: `foo`
|
||||
Fuzzy,
|
||||
/// Item contains query atom as a continous substring
|
||||
/// Item contains query atom as a continuous substring
|
||||
///
|
||||
/// Usage `'foo`
|
||||
Substring,
|
||||
@ -213,7 +213,7 @@ impl FuzzyQuery {
|
||||
Some(score)
|
||||
}
|
||||
|
||||
pub fn fuzzy_indicies(&self, item: &str, matcher: &Matcher) -> Option<(i64, Vec<usize>)> {
|
||||
pub fn fuzzy_indices(&self, item: &str, matcher: &Matcher) -> Option<(i64, Vec<usize>)> {
|
||||
let (score, mut indices) = self.first_fuzzy_atom.as_ref().map_or_else(
|
||||
|| Some((0, Vec::new())),
|
||||
|atom| matcher.fuzzy_indices(item, atom),
|
||||
|
@ -7,8 +7,8 @@ fn run_test<'a>(query: &str, items: &'a [&'a str]) -> Vec<String> {
|
||||
items
|
||||
.iter()
|
||||
.filter_map(|item| {
|
||||
let (_, indicies) = query.fuzzy_indicies(item, &matcher)?;
|
||||
let matched_string = indicies
|
||||
let (_, indices) = query.fuzzy_indices(item, &matcher)?;
|
||||
let matched_string = indices
|
||||
.iter()
|
||||
.map(|&pos| item.chars().nth(pos).unwrap())
|
||||
.collect();
|
||||
|
@ -16,7 +16,7 @@ pub struct Overlay<T> {
|
||||
}
|
||||
|
||||
/// Surrounds the component with a margin of 5% on each side, and an additional 2 rows at the bottom
|
||||
pub fn overlayed<T>(content: T) -> Overlay<T> {
|
||||
pub fn overlaid<T>(content: T) -> Overlay<T> {
|
||||
Overlay {
|
||||
content,
|
||||
calc_child_size: Box::new(|rect: Rect| clip_rect_relative(rect.clip_bottom(2), 90, 90)),
|
||||
|
@ -794,7 +794,7 @@ impl<T: Item + 'static> Component for Picker<T> {
|
||||
// might be inconsistencies. This is the best we can do since only the
|
||||
// text in Row is displayed to the end user.
|
||||
let (_score, highlights) = FuzzyQuery::new(self.prompt.line())
|
||||
.fuzzy_indicies(&line, &self.matcher)
|
||||
.fuzzy_indices(&line, &self.matcher)
|
||||
.unwrap_or_default();
|
||||
|
||||
let highlight_byte_ranges: Vec<_> = line
|
||||
|
@ -391,7 +391,7 @@ async fn cursor_position_newly_opened_file() -> anyhow::Result<()> {
|
||||
|
||||
#[tokio::test(flavor = "multi_thread")]
|
||||
async fn cursor_position_append_eof() -> anyhow::Result<()> {
|
||||
// Selection is fowards
|
||||
// Selection is forwards
|
||||
test((
|
||||
"#[foo|]#",
|
||||
"abar<esc>",
|
||||
|
@ -344,9 +344,9 @@ impl ModifierDiff {
|
||||
}
|
||||
}
|
||||
|
||||
/// Crossterm uses semicolon as a seperator for colors
|
||||
/// this is actually not spec compliant (altough commonly supported)
|
||||
/// However the correct approach is to use colons as a seperator.
|
||||
/// Crossterm uses semicolon as a separator for colors
|
||||
/// this is actually not spec compliant (although commonly supported)
|
||||
/// However the correct approach is to use colons as a separator.
|
||||
/// This usually doesn't make a difference for emulators that do support colored underlines.
|
||||
/// However terminals that do not support colored underlines will ignore underlines colors with colons
|
||||
/// while escape sequences with semicolons are always processed which leads to weird visual artifacts.
|
||||
|
@ -851,7 +851,7 @@ pub struct Editor {
|
||||
pub config_events: (UnboundedSender<ConfigEvent>, UnboundedReceiver<ConfigEvent>),
|
||||
/// Allows asynchronous tasks to control the rendering
|
||||
/// The `Notify` allows asynchronous tasks to request the editor to perform a redraw
|
||||
/// The `RwLock` blocks the editor from performing the render until an exclusive lock can be aquired
|
||||
/// The `RwLock` blocks the editor from performing the render until an exclusive lock can be acquired
|
||||
pub redraw_handle: RedrawHandle,
|
||||
pub needs_redraw: bool,
|
||||
/// Cached position of the cursor calculated during rendering.
|
||||
|
@ -128,7 +128,7 @@ impl Loader {
|
||||
let parent_palette = parent_theme_toml.get("palette");
|
||||
let palette = theme_toml.get("palette");
|
||||
|
||||
// handle the table seperately since it needs a `merge_depth` of 2
|
||||
// handle the table separately since it needs a `merge_depth` of 2
|
||||
// this would conflict with the rest of the theme merge strategy
|
||||
let palette_values = match (parent_palette, palette) {
|
||||
(Some(parent_palette), Some(palette)) => {
|
||||
|
Loading…
Reference in New Issue
Block a user