Uma opção MEGA específica no Neovim que vai te dar paz se você tem TOC ou é detalhista
Para aqueles que usam o Neovim e gostam de usar linhas de identação, o plugin indent-blankline é uma boa pedida, pois ele possui diversas funcionalidades, sendo a mais interessante a que realça o contexto em que você está com o cursor.
O único problema, é que, por padrão ele não realça alguns contextos como eu gostaria, deixando de realçar arrow functions, a estrutura condicional switch, realçando try/catch como um único contexto e vários outros que me incomodavam bastante.
Depois de certo tempo pesquisando eu descobri que para resolver esses problemas basta você passar os padrões de contexto que você deseja para a variável global indent_blankline_context_patterns
no arquivo de configuração do seu nvim.
Um exemplo em lua de como ficou o meu:
vim.g.indent_blankline_context_patterns = {
-- default patterns
"class",
"^func",
"method",
"^if",
"while",
"for",
"with",
"try",
"except",
"arguments",
"argument_list",
"object",
"dictionary",
"element",
"table",
"tuple",
"do_block",
-- my additional patterns
"abstract_class_declaration",
"abstract_method_signature",
"method",
"accessibility_modifier",
"ambient_declaration",
"array",
"array_pattern",
"array_type",
"arrow_function",
"as_expression",
"asserts",
"assignment_expression",
"assignment_pattern",
"augmented_assignment_expression",
"await_expression",
"binary_expression",
"break_statement",
"call_expression",
"^for",
"call_signature",
"catch_clause",
"class_body",
"^table",
"class_declaration",
"class_heritage",
"computed_property_name",
"conditional_type",
"constraint",
"construct_signature",
"constructor_type",
"continue_statement",
"debugger_statement",
"declaration",
"decorator",
"default_type",
"do_statement",
"else_clause",
"empty_statement",
"enum_assignment",
"enum_body",
"enum_declaration",
"existential_type",
"export_clause",
"export_specifier",
"export_statement",
"expression",
"arguments",
"expression_statement",
"extends_clause",
"finally_clause",
"flow_maybe_type",
"for_in_statement",
"for_statement",
"formal_parameters",
"function",
"function_declaration",
"function_signature",
"function_type",
"generator_function",
"generator_function_declaration",
"generic_type",
"if_statement",
"implements_clause",
"import",
"import_alias",
"import_clause",
"import_require_clause",
"import_specifier",
"import_statement",
"index_signature",
"index_type_query",
"infer_type",
"interface_declaration",
"internal_module",
"intersection_type",
"jsx_attribute",
"jsx_closing_element",
"jsx_element",
"jsx_expression",
"jsx_fragment",
"jsx_namespace_name",
"jsx_opening_element",
"jsx_self_closing_element",
"labeled_statement",
"lexical_declaration",
"literal_type",
"lookup_type",
"mapped_type_clause",
"member_expression",
"meta_property",
"method_definition",
"method_signature",
"module",
"named_imports",
"namespace_import",
"nested_identifier",
"nested_type_identifier",
"new_expression",
"non_null_expression",
"object_assignment_pattern",
"object_pattern",
"object_type",
"omitting_type_annotation",
"opting_type_annotation",
"optional_parameter",
"optional_type",
"pair",
"pair_pattern",
"parenthesized_expression",
"parenthesized_type",
"pattern",
"predefined_type",
"primary_expression",
"property_signature",
"public_field_definition",
"readonly_type",
"regex",
"required_parameter",
"rest_pattern",
"rest_type",
"return_statement",
"sequence_expression",
"spread_element",
"statement",
"statement_block",
"string",
"subscript_expression",
"switch_body",
"switch_case",
"switch_default",
"switch_statement",
"template_string",
"template_substitution",
"ternary_expression",
"throw_statement",
"try_statement",
"tuple_type",
"type_alias_declaration",
"type_annotation",
"type_arguments",
"type_parameter",
"type_parameters",
"type_predicate",
"type_predicate_annotation",
"type_query",
"unary_expression",
"union_type",
"update_expression",
"variable_declaration",
"variable_declarator",
"while_statement",
"with_statement",
"yield_expression",
}
Para maiores detalhes acesse :help g:indent_blankline_context_patterns
E você, tem alguma coisa no seu Neovim que te incomodava? Diz aí como resolveu.