Compare commits

...

3 Commits

Author SHA1 Message Date
Joakim Skogø Langvand f8ae28264a Merge branch 'more-editor-actions' into 'master' 7 months ago
eidheim f8f112f3fc Made variable sized array constant size 7 months ago
Joakim Skogø Langvand a6fadcb171 Added some Emacs-style actions 4 years ago
  1. 5
      src/config.cpp
  2. 3
      src/debug_lldb.cpp
  3. 2
      src/debug_lldb.hpp
  4. 58
      src/window.cpp

5
src/config.cpp

@ -391,6 +391,11 @@ std::string Config::default_config() {
"edit_shrink_selection": "<primary><shift><alt>a", "edit_shrink_selection": "<primary><shift><alt>a",
"edit_show_or_hide": "", "edit_show_or_hide": "",
"edit_find": "<primary>f", "edit_find": "<primary>f",
"edit_go_to_beginning_of_line": "",
"edit_go_to_end_of_line": "",
"edit_go_to_previous_line": "",
"edit_go_to_next_line": "",
"edit_insert_line": "",
"source_spellcheck": "", "source_spellcheck": "",
"source_spellcheck_clear": "", "source_spellcheck_clear": "",
"source_spellcheck_next_error": "<primary><shift>e", "source_spellcheck_next_error": "<primary><shift>e",

3
src/debug_lldb.cpp

@ -10,12 +10,13 @@
extern char **environ; extern char **environ;
bool Debug::LLDB::initialized = false; bool Debug::LLDB::initialized = false;
const size_t Debug::LLDB::buffer_size = 131072;
void log(const char *msg, void *) { void log(const char *msg, void *) {
std::cout << "debugger log: " << msg << std::endl; std::cout << "debugger log: " << msg << std::endl;
} }
Debug::LLDB::LLDB() : listener("juCi++ lldb listener"), state(lldb::StateType::eStateInvalid), buffer_size(131072) { Debug::LLDB::LLDB() : listener("juCi++ lldb listener"), state(lldb::StateType::eStateInvalid) {
#ifndef __APPLE__ #ifndef __APPLE__
auto debug_server_path = filesystem::get_executable("lldb-server").string(); auto debug_server_path = filesystem::get_executable("lldb-server").string();
if(debug_server_path != "lldb-server") if(debug_server_path != "lldb-server")

2
src/debug_lldb.hpp

@ -95,6 +95,6 @@ namespace Debug {
lldb::StateType state GUARDED_BY(mutex); lldb::StateType state GUARDED_BY(mutex);
size_t buffer_size; const static size_t buffer_size;
}; };
} // namespace Debug } // namespace Debug

58
src/window.cpp

@ -754,6 +754,64 @@ void Window::set_menu_actions() {
search_and_replace_entry(); search_and_replace_entry();
}); });
menu.add_action("edit_go_to_beginning_of_line", []() {
if(auto view = Notebook::get().get_current_view()) {
auto buffer = view->get_buffer();
auto iter = buffer->get_insert()->get_iter();
// If we're already at the beginning of the line, move to
// first character excluding spaces.
if(iter.starts_line())
while(iter.get_char() == 0x20)
iter.forward_char();
else if(iter.backward_line())
iter.forward_line();
buffer->place_cursor(iter);
}
});
menu.add_action("edit_go_to_end_of_line", []() {
if(auto view = Notebook::get().get_current_view()) {
auto buffer = view->get_buffer();
auto iter = buffer->get_insert()->get_iter();
if(!iter.ends_line()) {
iter.forward_to_line_end();
buffer->place_cursor(iter);
}
}
});
menu.add_action("edit_go_to_previous_line", []() {
if(auto view = Notebook::get().get_current_view()) {
auto buffer = view->get_buffer();
auto iter = buffer->get_insert()->get_iter();
int offset = iter.get_visible_line_offset();
if(iter.backward_line()) {
int length = iter.get_chars_in_line();
iter.set_visible_line_offset(length < offset ? length : offset);
}
buffer->place_cursor(iter);
}
});
menu.add_action("edit_go_to_next_line", []() {
if(auto view = Notebook::get().get_current_view()) {
auto buffer = view->get_buffer();
auto iter = buffer->get_insert()->get_iter();
int offset = iter.get_visible_line_offset();
if(iter.forward_line()) {
int length = iter.get_chars_in_line();
iter.set_visible_line_offset(length < offset ? length : offset);
}
buffer->place_cursor(iter);
}
});
menu.add_action("edit_insert_line", []() {
if(auto view = Notebook::get().get_current_view()) {
auto buffer = view->get_buffer();
auto iter = buffer->get_insert()->get_iter();
if(iter.forward_line())
buffer->insert(iter, "\n");
}
});
menu.add_action("source_spellcheck", []() { menu.add_action("source_spellcheck", []() {
if(auto view = Notebook::get().get_current_view()) { if(auto view = Notebook::get().get_current_view()) {
view->remove_spellcheck_errors(); view->remove_spellcheck_errors();

Loading…
Cancel
Save