From 5144dbb2d3862bfe28d5f568b89fdac9678b3508 Mon Sep 17 00:00:00 2001 From: eidheim Date: Thu, 4 Jun 2020 14:02:51 +0200 Subject: [PATCH] Language client: added support for JSX property completion after space inside JSX angle brackets --- src/source_language_protocol.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/source_language_protocol.cpp b/src/source_language_protocol.cpp index 4954ca5..c0e491c 100644 --- a/src/source_language_protocol.cpp +++ b/src/source_language_protocol.cpp @@ -1417,7 +1417,21 @@ void Source::LanguageProtocolView::setup_autocomplete() { return false; }; - autocomplete->run_check = [this]() { + std::function is_possible_jsx_property = [](const Gtk::TextIter &) { return false; }; + if(language && language->get_id() == "js") { + autocomplete->is_restart_key = [](guint keyval) { + if(keyval == '.' || keyval == ' ') + return true; + return false; + }; + + is_possible_jsx_property = [this](const Gtk::TextIter &iter) { + Gtk::TextIter found_iter; + return *iter == ' ' && find_open_symbol_backward(iter, found_iter, '<', '>'); + }; + } + + autocomplete->run_check = [this, is_possible_jsx_property]() { auto iter = get_buffer()->get_insert()->get_iter(); iter.backward_char(); if(!is_code_iter(iter)) @@ -1440,6 +1454,11 @@ void Source::LanguageProtocolView::setup_autocomplete() { } return true; } + else if(is_possible_jsx_property(iter)) { + LockGuard lock(autocomplete->prefix_mutex); + autocomplete->prefix = ""; + return true; + } else if(is_possible_argument()) { autocomplete_show_arguments = true; LockGuard lock(autocomplete->prefix_mutex);