From b3e9cbb8e9179008ee5823faae33916883ac6acb Mon Sep 17 00:00:00 2001 From: Hakan Nilsson Date: Fri, 11 Oct 2024 17:48:24 +0200 Subject: [PATCH] Fix crash in code actions --- apps/els_lsp/src/els_code_actions.erl | 62 ++++++++++++++++----------- 1 file changed, 36 insertions(+), 26 deletions(-) diff --git a/apps/els_lsp/src/els_code_actions.erl b/apps/els_lsp/src/els_code_actions.erl index c4e8fb5d..1d7db3cb 100644 --- a/apps/els_lsp/src/els_code_actions.erl +++ b/apps/els_lsp/src/els_code_actions.erl @@ -138,19 +138,24 @@ define_macro(Uri, Range, _Data, [Macro0]) -> [module, include, include_lib, define], BeforeRange ), - #{range := #{to := {Line, _}}} = lists:last(els_poi:sort(POIs)), - [ - make_edit_action( - Uri, - <<"Define ", Macro0/binary>>, - ?CODE_ACTION_KIND_QUICKFIX, - NewText, - els_protocol:range(#{ - to => {Line + 1, 1}, - from => {Line + 1, 1} - }) - ) - ]. + case POIs of + [] -> + []; + _ -> + #{range := #{to := {Line, _}}} = lists:last(els_poi:sort(POIs)), + [ + make_edit_action( + Uri, + <<"Define ", Macro0/binary>>, + ?CODE_ACTION_KIND_QUICKFIX, + NewText, + els_protocol:range(#{ + to => {Line + 1, 1}, + from => {Line + 1, 1} + }) + ) + ] + end. -spec define_record(uri(), range(), binary(), [binary()]) -> [map()]. define_record(Uri, Range, _Data, [Record]) -> @@ -163,19 +168,24 @@ define_record(Uri, Range, _Data, [Record]) -> [module, include, include_lib, record], BeforeRange ), - Line = end_line(lists:last(els_poi:sort(POIs))), - [ - make_edit_action( - Uri, - <<"Define record ", Record/binary>>, - ?CODE_ACTION_KIND_QUICKFIX, - NewText, - els_protocol:range(#{ - to => {Line + 1, 1}, - from => {Line + 1, 1} - }) - ) - ]. + case POIs of + [] -> + []; + _ -> + Line = end_line(lists:last(els_poi:sort(POIs))), + [ + make_edit_action( + Uri, + <<"Define record ", Record/binary>>, + ?CODE_ACTION_KIND_QUICKFIX, + NewText, + els_protocol:range(#{ + to => {Line + 1, 1}, + from => {Line + 1, 1} + }) + ) + ] + end. -spec end_line(els_poi:poi()) -> non_neg_integer(). end_line(#{data := #{value_range := #{to := {Line, _}}}}) ->