on master help sign in
switch redundant current! usage to doc! (#1416)
commit93a948d889f3d8fba97a37f163d080f9908dbaa3 authorKirawi <67773714+kirawi@users.noreply.github.com> dateSun 2 Jan 2022, 20:46 (5 years ago) parentaaa42e1
2 files changed+44−48
helix-term/src/commands.rs+16−26 helix-term/src/ui/editor.rs+28−22
helix-term/src/commands.rs+16−26
@@ -1545,7 +1545,7 @@ fn searcher(cx: &mut Context, direction: Direction) {
15451545 let reg = cx.register.unwrap_or('/');
15461546 let scrolloff = cx.editor.config.scrolloff;
15471547
1548− let (_, doc) = current!(cx.editor);
1548+ let doc = doc!(cx.editor);
15491549
15501550 // TODO: could probably share with select_on_matches?
15511551
@@ -2046,7 +2046,7 @@ pub mod cmd {
20462046
20472047 fn write_impl(cx: &mut compositor::Context, path: Option<&Cow<str>>) -> anyhow::Result<()> {
20482048 let jobs = &mut cx.jobs;
2049− let (_, doc) = current!(cx.editor);
2049+ let doc = doc_mut!(cx.editor);
20502050
20512051 if let Some(ref path) = path {
20522052 doc.set_path(Some(path.as_ref().as_ref()))
@@ -2099,8 +2099,7 @@ pub mod cmd {
20992099 _args: &[Cow<str>],
21002100 _event: PromptEvent,
21012101 ) -> anyhow::Result<()> {
2102− let (_, doc) = current!(cx.editor);
2103−
2102+ let doc = doc!(cx.editor);
21042103 if let Some(format) = doc.format() {
21052104 let callback =
21062105 make_format_callback(doc.id(), doc.version(), Modified::LeaveModified, format);
@@ -2409,7 +2408,7 @@ pub mod cmd {
24092408 args: &[Cow<str>],
24102409 _event: PromptEvent,
24112410 ) -> anyhow::Result<()> {
2412− let (_, doc) = current!(cx.editor);
2411+ let doc = doc!(cx.editor);
24132412 let default_sep = Cow::Borrowed(doc.line_ending.as_str());
24142413 let separator = args.first().unwrap_or(&default_sep);
24152414 yank_joined_to_clipboard_impl(cx.editor, separator, ClipboardType::Clipboard)
@@ -2428,7 +2427,7 @@ pub mod cmd {
24282427 args: &[Cow<str>],
24292428 _event: PromptEvent,
24302429 ) -> anyhow::Result<()> {
2431− let (_, doc) = current!(cx.editor);
2430+ let doc = doc!(cx.editor);
24322431 let default_sep = Cow::Borrowed(doc.line_ending.as_str());
24332432 let separator = args.first().unwrap_or(&default_sep);
24342433 yank_joined_to_clipboard_impl(cx.editor, separator, ClipboardType::Selection)
@@ -2555,7 +2554,7 @@ pub mod cmd {
25552554 args: &[Cow<str>],
25562555 _event: PromptEvent,
25572556 ) -> anyhow::Result<()> {
2558− let (_, doc) = current!(cx.editor);
2557+ let doc = doc_mut!(cx.editor);
25592558 if let Some(label) = args.first() {
25602559 doc.set_encoding(label)
25612560 } else {
@@ -3247,7 +3246,7 @@ fn symbol_picker(cx: &mut Context) {
32473246 nested_to_flat(list, file, child);
32483247 }
32493248 }
3250− let (_, doc) = current!(cx.editor);
3249+ let doc = doc!(cx.editor);
32513250
32523251 let language_server = match doc.language_server() {
32533252 Some(language_server) => language_server,
@@ -3268,7 +3267,7 @@ fn symbol_picker(cx: &mut Context) {
32683267 let symbols = match symbols {
32693268 lsp::DocumentSymbolResponse::Flat(symbols) => symbols,
32703269 lsp::DocumentSymbolResponse::Nested(symbols) => {
3271− let (_view, doc) = current!(editor);
3270+ let doc = doc!(editor);
32723271 let mut flat_symbols = Vec::new();
32733272 for symbol in symbols {
32743273 nested_to_flat(&mut flat_symbols, &doc.identifier(), symbol)
@@ -3310,17 +3309,15 @@ fn symbol_picker(cx: &mut Context) {
33103309}
33113310
33123311fn workspace_symbol_picker(cx: &mut Context) {
3313− let (_, doc) = current!(cx.editor);
3314−
3312+ let doc = doc!(cx.editor);
3313+ let current_path = doc.path().cloned();
33153314 let language_server = match doc.language_server() {
33163315 Some(language_server) => language_server,
33173316 None => return,
33183317 };
33193318 let offset_encoding = language_server.offset_encoding();
3320−
33213319 let future = language_server.workspace_symbols("".to_string());
33223320
3323− let current_path = doc_mut!(cx.editor).path().cloned();
33243321 cx.callback(
33253322 future,
33263323 move |_editor: &mut Editor,
@@ -3430,8 +3427,7 @@ pub fn code_action(cx: &mut Context) {
34303427}
34313428
34323429pub fn execute_lsp_command(editor: &mut Editor, cmd: lsp::Command) {
3433− let (_view, doc) = current!(editor);
3434−
3430+ let doc = doc!(editor);
34353431 let language_server = match doc.language_server() {
34363432 Some(language_server) => language_server,
34373433 None => return,
@@ -4185,27 +4181,21 @@ fn goto_pos(editor: &mut Editor, pos: usize) {
41854181}
41864182
41874183fn goto_first_diag(cx: &mut Context) {
4188− let editor = &mut cx.editor;
4189− let (_, doc) = current!(editor);
4190−
4184+ let doc = doc!(cx.editor);
41914185 let pos = match doc.diagnostics().first() {
41924186 Some(diag) => diag.range.start,
41934187 None => return,
41944188 };
4195−
4196− goto_pos(editor, pos);
4189+ goto_pos(cx.editor, pos);
41974190}
41984191
41994192fn goto_last_diag(cx: &mut Context) {
4200− let editor = &mut cx.editor;
4201− let (_, doc) = current!(editor);
4202−
4193+ let doc = doc!(cx.editor);
42034194 let pos = match doc.diagnostics().last() {
42044195 Some(diag) => diag.range.start,
42054196 None => return,
42064197 };
4207−
4208− goto_pos(editor, pos);
4198+ goto_pos(cx.editor, pos);
42094199}
42104200
42114201fn goto_next_diag(cx: &mut Context) {
@@ -5270,7 +5260,7 @@ pub fn completion(cx: &mut Context) {
52705260 move |editor: &mut Editor,
52715261 compositor: &mut Compositor,
52725262 response: Option<lsp::CompletionResponse>| {
5273− let (_, doc) = current!(editor);
5263+ let doc = doc!(editor);
52745264 if doc.mode() != Mode::Insert {
52755265 // we're not in insert mode anymore
52765266 return;
helix-term/src/ui/editor.rs+28−22
@@ -781,8 +781,9 @@ impl EditorView {
781781
782782 pub fn clear_completion(&mut self, editor: &mut Editor) {
783783 self.completion = None;
784+
784785 // Clear any savepoints
785− let (_, doc) = current!(editor);
786+ let doc = doc_mut!(editor);
786787 doc.savepoint = None;
787788 editor.clear_idle_timer(); // don't retrigger
788789 }
@@ -940,14 +941,18 @@ impl EditorView {
940941}
941942
942943impl Component for EditorView {
943− fn handle_event(&mut self, event: Event, cx: &mut Context) -> EventResult {
944− let mut cxt = commands::Context {
945− editor: cx.editor,
944+ fn handle_event(
945+ &mut self,
946+ event: Event,
947+ context: &mut crate::compositor::Context,
948+ ) -> EventResult {
949+ let mut cx = commands::Context {
950+ editor: context.editor,
946951 count: None,
947952 register: None,
948953 callback: None,
949954 on_next_key_callback: None,
950− jobs: cx.jobs,
955+ jobs: context.jobs,
951956 };
952957
953958 match event {
@@ -957,18 +962,19 @@ impl Component for EditorView {
957962 EventResult::Consumed(None)
958963 }
959964 Event::Key(key) => {
960− cxt.editor.reset_idle_timer();
965+ cx.editor.reset_idle_timer();
961966 let mut key = KeyEvent::from(key);
962967 canonicalize_key(&mut key);
968+
963969 // clear status
964− cxt.editor.status_msg = None;
970+ cx.editor.status_msg = None;
965971
966− let (_, doc) = current!(cxt.editor);
972+ let doc = doc!(cx.editor);
967973 let mode = doc.mode();
968974
969975 if let Some(on_next_key) = self.on_next_key.take() {
970976 // if there's a command waiting input, do that first
971− on_next_key(&mut cxt, key);
977+ on_next_key(&mut cx, key);
972978 } else {
973979 match mode {
974980 Mode::Insert => {
@@ -980,8 +986,8 @@ impl Component for EditorView {
980986 if let Some(completion) = &mut self.completion {
981987 // use a fake context here
982988 let mut cx = Context {
983− editor: cxt.editor,
984− jobs: cxt.jobs,
989+ editor: cx.editor,
990+ jobs: cx.jobs,
985991 scroll: None,
986992 };
987993 let res = completion.handle_event(event, &mut cx);
@@ -991,40 +997,40 @@ impl Component for EditorView {
991997
992998 if callback.is_some() {
993999 // assume close_fn
994− self.clear_completion(cxt.editor);
1000+ self.clear_completion(cx.editor);
9951001 }
9961002 }
9971003 }
9981004
9991005 // if completion didn't take the event, we pass it onto commands
10001006 if !consumed {
1001− self.insert_mode(&mut cxt, key);
1007+ self.insert_mode(&mut cx, key);
10021008
10031009 // lastly we recalculate completion
10041010 if let Some(completion) = &mut self.completion {
1005− completion.update(&mut cxt);
1011+ completion.update(&mut cx);
10061012 if completion.is_empty() {
1007− self.clear_completion(cxt.editor);
1013+ self.clear_completion(cx.editor);
10081014 }
10091015 }
10101016 }
10111017 }
1012− mode => self.command_mode(mode, &mut cxt, key),
1018+ mode => self.command_mode(mode, &mut cx, key),
10131019 }
10141020 }
10151021
1016− self.on_next_key = cxt.on_next_key_callback.take();
1022+ self.on_next_key = cx.on_next_key_callback.take();
10171023 // appease borrowck
1018− let callback = cxt.callback.take();
1024+ let callback = cx.callback.take();
10191025
10201026 // if the command consumed the last view, skip the render.
10211027 // on the next loop cycle the Application will then terminate.
1022− if cxt.editor.should_close() {
1028+ if cx.editor.should_close() {
10231029 return EventResult::Ignored;
10241030 }
10251031
1026− let (view, doc) = current!(cxt.editor);
1027− view.ensure_cursor_in_view(doc, cxt.editor.config.scrolloff);
1032+ let (view, doc) = current!(cx.editor);
1033+ view.ensure_cursor_in_view(doc, cx.editor.config.scrolloff);
10281034
10291035 // mode transitions
10301036 match (mode, doc.mode()) {
@@ -1053,7 +1059,7 @@ impl Component for EditorView {
10531059 EventResult::Consumed(callback)
10541060 }
10551061
1056− Event::Mouse(event) => self.handle_mouse_event(event, &mut cxt),
1062+ Event::Mouse(event) => self.handle_mouse_event(event, &mut cx),
10571063 }
10581064 }
10591065