Browse Source

Get token cleanup and improved rust debugging

pipelines/235045657
eidheim 6 years ago
parent
commit
d6f967281c
  1. 2
      src/autocomplete.h
  2. 9
      src/source_base.cc
  3. 7
      src/source_clang.cc
  4. 7
      src/source_generic.cc
  5. 72
      src/source_language_protocol.cc

2
src/autocomplete.h

@ -33,7 +33,7 @@ public:
std::function<std::unique_ptr<LockGuard>()> get_parse_lock = [] { return nullptr; }; std::function<std::unique_ptr<LockGuard>()> get_parse_lock = [] { return nullptr; };
std::function<void()> stop_parse = [] {}; std::function<void()> stop_parse = [] {};
std::function<bool(guint last_keyval)> is_continue_key = [](guint) { return false; }; std::function<bool(guint last_keyval)> is_continue_key = [](guint keyval) { return (keyval >= '0' && keyval <= '9') || (keyval >= 'a' && keyval <= 'z') || (keyval >= 'A' && keyval <= 'Z') || keyval == '_' || gdk_keyval_to_unicode(keyval) >= 0x00C0; };
std::function<bool(guint last_keyval)> is_restart_key = [](guint) { return false; }; std::function<bool(guint last_keyval)> is_restart_key = [](guint) { return false; };
std::function<bool()> run_check = [] { return false; }; std::function<bool()> run_check = [] { return false; };

9
src/source_base.cc

@ -618,14 +618,9 @@ std::pair<Gtk::TextIter, Gtk::TextIter> Source::BaseView::get_token_iters(Gtk::T
auto start = iter; auto start = iter;
auto end = iter; auto end = iter;
while(is_token_char(*iter)) { while(iter.backward_char() && is_token_char(*iter))
start = iter; start = iter;
if(!iter.backward_char()) while(is_token_char(*end) && end.forward_char()) {
break;
}
while(is_token_char(*end)) {
if(!end.forward_char())
break;
} }
return {start, end}; return {start, end};

7
src/source_clang.cc

@ -611,13 +611,6 @@ Source::ClangViewAutocomplete::ClangViewAutocomplete(const boost::filesystem::pa
return false; return false;
}, false); }, false);
autocomplete.is_continue_key = [](guint keyval) {
if((keyval >= '0' && keyval <= '9') || (keyval >= 'a' && keyval <= 'z') || (keyval >= 'A' && keyval <= 'Z') || keyval == '_')
return true;
return false;
};
autocomplete.is_restart_key = [this](guint keyval) { autocomplete.is_restart_key = [this](guint keyval) {
auto iter = get_buffer()->get_insert()->get_iter(); auto iter = get_buffer()->get_insert()->get_iter();
iter.backward_chars(2); iter.backward_chars(2);

7
src/source_generic.cc

@ -198,13 +198,6 @@ void Source::GenericView::setup_autocomplete() {
autocomplete_insert.clear(); autocomplete_insert.clear();
}; };
autocomplete.is_continue_key = [](guint keyval) {
if((keyval >= '0' && keyval <= '9') || (keyval >= 'a' && keyval <= 'z') || (keyval >= 'A' && keyval <= 'Z') || keyval == '_' || gdk_keyval_to_unicode(keyval) >= 0x00C0)
return true;
return false;
};
autocomplete.is_restart_key = [](guint keyval) { autocomplete.is_restart_key = [](guint keyval) {
return false; return false;
}; };

72
src/source_language_protocol.cc

@ -659,21 +659,11 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() {
}; };
} }
get_token_spelling = [this]() -> std::string { get_token_spelling = [this] {
auto start = get_buffer()->get_insert()->get_iter(); auto spelling = get_token(get_buffer()->get_insert()->get_iter());
auto end = start; if(spelling.empty())
auto previous = start;
while(previous.backward_char() && ((*previous >= 'A' && *previous <= 'Z') || (*previous >= 'a' && *previous <= 'z') || (*previous >= '0' && *previous <= '9') || *previous == '_') && start.backward_char()) {
}
while(((*end >= 'A' && *end <= 'Z') || (*end >= 'a' && *end <= 'z') || (*end >= '0' && *end <= '9') || *end == '_') && end.forward_char()) {
}
if(start == end) {
Info::get().print("No valid symbol found at current cursor location"); Info::get().print("No valid symbol found at current cursor location");
return ""; return spelling;
}
return get_buffer()->get_text(start, end);
}; };
if(capabilities.rename || capabilities.document_highlight) { if(capabilities.rename || capabilities.document_highlight) {
@ -684,7 +674,7 @@ void Source::LanguageProtocolView::setup_navigation_and_refactoring() {
std::vector<LanguageProtocol::TextEdit> text_edits; std::vector<LanguageProtocol::TextEdit> text_edits;
}; };
auto previous_text = get_token_spelling(); auto previous_text = get_token(get_buffer()->get_insert()->get_iter());
if(previous_text.empty()) if(previous_text.empty())
return; return;
@ -1054,14 +1044,8 @@ void Source::LanguageProtocolView::show_type_tooltips(const Gdk::Rectangle &rect
return; return;
type_tooltips.clear(); type_tooltips.clear();
auto start = get_buffer()->get_iter_at_offset(offset); auto token_iters = get_token_iters(get_buffer()->get_iter_at_offset(offset));
auto end = start; type_tooltips.emplace_back(this, get_buffer()->create_mark(token_iters.first), get_buffer()->create_mark(token_iters.second), [this, offset, contents = std::move(contents)](Tooltip &tooltip) {
auto previous = start;
while(previous.backward_char() && ((*previous >= 'A' && *previous <= 'Z') || (*previous >= 'a' && *previous <= 'z') || (*previous >= '0' && *previous <= '9') || *previous == '_') && start.backward_char()) {
}
while(((*end >= 'A' && *end <= 'Z') || (*end >= 'a' && *end <= 'z') || (*end >= '0' && *end <= '9') || *end == '_') && end.forward_char()) {
}
type_tooltips.emplace_back(this, get_buffer()->create_mark(start), get_buffer()->create_mark(end), [this, offset, contents = std::move(contents)](Tooltip &tooltip) {
for(size_t i = 0; i < contents.size(); i++) { for(size_t i = 0; i < contents.size(); i++) {
if(i > 0) if(i > 0)
tooltip.buffer->insert_at_cursor("\n\n"); tooltip.buffer->insert_at_cursor("\n\n");
@ -1078,20 +1062,35 @@ void Source::LanguageProtocolView::show_type_tooltips(const Gdk::Rectangle &rect
if(Debug::LLDB::get().is_stopped()) { if(Debug::LLDB::get().is_stopped()) {
Glib::ustring value_type = "Value"; Glib::ustring value_type = "Value";
auto start = get_buffer()->get_iter_at_offset(offset); auto token_iters = get_token_iters(get_buffer()->get_iter_at_offset(offset));
auto end = start; auto offset = get_declaration(token_iters.first);
auto previous = start;
while(previous.backward_char() && ((*previous >= 'A' && *previous <= 'Z') || (*previous >= 'a' && *previous <= 'z') || (*previous >= '0' && *previous <= '9') || *previous == '_') && start.backward_char()) {
}
while(((*end >= 'A' && *end <= 'Z') || (*end >= 'a' && *end <= 'z') || (*end >= '0' && *end <= '9') || *end == '_') && end.forward_char()) {
}
auto variable = get_buffer()->get_text(start, end);
auto offset = get_declaration(start); auto variable = get_buffer()->get_text(token_iters.first, token_iters.second);
Glib::ustring debug_value = Debug::LLDB::get().get_value(variable, offset.file_path, offset.line + 1, offset.index + 1); Glib::ustring debug_value = Debug::LLDB::get().get_value(variable, offset.file_path, offset.line + 1, offset.index + 1);
if(debug_value.empty()) { if(debug_value.empty()) {
debug_value = Debug::LLDB::get().get_return_value(file_path, token_iters.first.get_line() + 1, token_iters.first.get_line_index() + 1);
if(!debug_value.empty())
value_type = "Return value"; value_type = "Return value";
debug_value = Debug::LLDB::get().get_return_value(file_path, start.get_line() + 1, start.get_line_index() + 1); }
if(debug_value.empty()) {
auto end = token_iters.second;
while((end.ends_line() || *end == ' ' || *end == '\t') && end.forward_char()) {
}
if(*end != '(') {
auto iter = token_iters.first;
auto start = iter;
while(iter.backward_char()) {
if(*iter == '.') {
while(iter.backward_char() && (*iter == ' ' || *iter == '\t' || iter.ends_line())) {
}
}
if(!is_token_char(*iter))
break;
start = iter;
}
if(is_token_char(*start))
debug_value = Debug::LLDB::get().get_value(get_buffer()->get_text(start, token_iters.second));
}
} }
if(!debug_value.empty()) { if(!debug_value.empty()) {
size_t pos = debug_value.find(" = "); size_t pos = debug_value.find(" = ");
@ -1279,13 +1278,6 @@ void Source::LanguageProtocolView::setup_autocomplete() {
} }
} }
autocomplete->is_continue_key = [](guint keyval) {
if((keyval >= '0' && keyval <= '9') || (keyval >= 'a' && keyval <= 'z') || (keyval >= 'A' && keyval <= 'Z') || keyval == '_')
return true;
return false;
};
autocomplete->is_restart_key = [this](guint keyval) { autocomplete->is_restart_key = [this](guint keyval) {
auto iter = get_buffer()->get_insert()->get_iter(); auto iter = get_buffer()->get_insert()->get_iter();
iter.backward_chars(2); iter.backward_chars(2);

Loading…
Cancel
Save