mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 17:36:19 +04:00
Implement From<Mode> for Movement.
That allows to refactor a bit of code; we have the following pattern in many different places: if cx.editor.mode == Mode::Select { Movement::Extend } else { Movement::Move } The From impl captures that pattern, so that we can just do cx.editor.mode.into().
This commit is contained in:
parent
617e800833
commit
eb8254c4a6
@ -785,15 +785,7 @@ fn goto_line_end_impl(view: &mut View, doc: &mut Document, movement: Movement) {
|
|||||||
|
|
||||||
fn goto_line_end(cx: &mut Context) {
|
fn goto_line_end(cx: &mut Context) {
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
goto_line_end_impl(
|
goto_line_end_impl(view, doc, cx.editor.mode.into())
|
||||||
view,
|
|
||||||
doc,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extend_to_line_end(cx: &mut Context) {
|
fn extend_to_line_end(cx: &mut Context) {
|
||||||
@ -815,15 +807,7 @@ fn goto_line_end_newline_impl(view: &mut View, doc: &mut Document, movement: Mov
|
|||||||
|
|
||||||
fn goto_line_end_newline(cx: &mut Context) {
|
fn goto_line_end_newline(cx: &mut Context) {
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
goto_line_end_newline_impl(
|
goto_line_end_newline_impl(view, doc, cx.editor.mode.into())
|
||||||
view,
|
|
||||||
doc,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extend_to_line_end_newline(cx: &mut Context) {
|
fn extend_to_line_end_newline(cx: &mut Context) {
|
||||||
@ -846,15 +830,7 @@ fn goto_line_start_impl(view: &mut View, doc: &mut Document, movement: Movement)
|
|||||||
|
|
||||||
fn goto_line_start(cx: &mut Context) {
|
fn goto_line_start(cx: &mut Context) {
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
goto_line_start_impl(
|
goto_line_start_impl(view, doc, cx.editor.mode.into())
|
||||||
view,
|
|
||||||
doc,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn goto_next_buffer(cx: &mut Context) {
|
fn goto_next_buffer(cx: &mut Context) {
|
||||||
@ -944,16 +920,7 @@ fn kill_to_line_end(cx: &mut Context) {
|
|||||||
|
|
||||||
fn goto_first_nonwhitespace(cx: &mut Context) {
|
fn goto_first_nonwhitespace(cx: &mut Context) {
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
|
goto_first_nonwhitespace_impl(view, doc, cx.editor.mode.into())
|
||||||
goto_first_nonwhitespace_impl(
|
|
||||||
view,
|
|
||||||
doc,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extend_to_first_nonwhitespace(cx: &mut Context) {
|
fn extend_to_first_nonwhitespace(cx: &mut Context) {
|
||||||
@ -1224,14 +1191,7 @@ fn goto_next_paragraph(cx: &mut Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn goto_file_start(cx: &mut Context) {
|
fn goto_file_start(cx: &mut Context) {
|
||||||
goto_file_start_impl(
|
goto_file_start_impl(cx, cx.editor.mode.into());
|
||||||
cx,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extend_file_start(cx: &mut Context) {
|
fn extend_file_start(cx: &mut Context) {
|
||||||
@ -1254,14 +1214,7 @@ fn goto_file_start_impl(cx: &mut Context, movement: Movement) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn goto_file_end(cx: &mut Context) {
|
fn goto_file_end(cx: &mut Context) {
|
||||||
goto_file_end_impl(
|
goto_file_end_impl(cx, cx.editor.mode.into());
|
||||||
cx,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn extend_file_end(cx: &mut Context) {
|
fn extend_file_end(cx: &mut Context) {
|
||||||
@ -3557,14 +3510,7 @@ fn push_jump(view: &mut View, doc: &Document) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn goto_line(cx: &mut Context) {
|
fn goto_line(cx: &mut Context) {
|
||||||
goto_line_impl(
|
goto_line_impl(cx, cx.editor.mode.into());
|
||||||
cx,
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn goto_line_impl(cx: &mut Context, movement: Movement) {
|
fn goto_line_impl(cx: &mut Context, movement: Movement) {
|
||||||
|
@ -1814,15 +1814,7 @@ fn update_goto_line_number_preview(
|
|||||||
|
|
||||||
let scrolloff = cx.editor.config().scrolloff;
|
let scrolloff = cx.editor.config().scrolloff;
|
||||||
let line = args[0].parse::<usize>()?;
|
let line = args[0].parse::<usize>()?;
|
||||||
goto_line_without_jumplist(
|
goto_line_without_jumplist(cx.editor, NonZeroUsize::new(line), cx.editor.mode.into());
|
||||||
cx.editor,
|
|
||||||
NonZeroUsize::new(line),
|
|
||||||
if cx.editor.mode == Mode::Select {
|
|
||||||
Movement::Extend
|
|
||||||
} else {
|
|
||||||
Movement::Move
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
let (view, doc) = current!(cx.editor);
|
let (view, doc) = current!(cx.editor);
|
||||||
view.ensure_cursor_in_view(doc, scrolloff);
|
view.ensure_cursor_in_view(doc, scrolloff);
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
use helix_core::chars::char_is_word;
|
use helix_core::chars::char_is_word;
|
||||||
use helix_core::doc_formatter::TextFormat;
|
use helix_core::doc_formatter::TextFormat;
|
||||||
use helix_core::encoding::Encoding;
|
use helix_core::encoding::Encoding;
|
||||||
|
use helix_core::movement::Movement;
|
||||||
use helix_core::syntax::{Highlight, LanguageServerFeature};
|
use helix_core::syntax::{Highlight, LanguageServerFeature};
|
||||||
use helix_core::text_annotations::{InlineAnnotation, Overlay};
|
use helix_core::text_annotations::{InlineAnnotation, Overlay};
|
||||||
use helix_lsp::util::lsp_pos_to_pos;
|
use helix_lsp::util::lsp_pos_to_pos;
|
||||||
@ -102,6 +103,16 @@ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
|||||||
serializer.collect_str(self)
|
serializer.collect_str(self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<Mode> for Movement {
|
||||||
|
fn from(mode: Mode) -> Self {
|
||||||
|
match mode {
|
||||||
|
Mode::Select => Movement::Extend,
|
||||||
|
_ => Movement::Move,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// A snapshot of the text of a document that we want to write out to disk
|
/// A snapshot of the text of a document that we want to write out to disk
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct DocumentSavedEvent {
|
pub struct DocumentSavedEvent {
|
||||||
|
Loading…
Reference in New Issue
Block a user