diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-08-17 15:19:04 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-08-17 15:19:04 +0100 |
| commit | 5c3f01fea26d80fd3d3a6b3afa94d48abc0c0c6d (patch) | |
| tree | 1e182beaf7c54cefe13020eeba64e6dd02447e34 /src | |
| parent | 8d4531d419a2854970d67658fadfa9302308fb6c (diff) | |
Add exception reporting in filter mode
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.cc | 52 |
1 files changed, 33 insertions, 19 deletions
diff --git a/src/main.cc b/src/main.cc index 3ef17912..36ec7980 100644 --- a/src/main.cc +++ b/src/main.cc @@ -397,31 +397,45 @@ int run_filter(StringView keystr, memoryview<StringView> files) register_env_vars(); register_registers(); - auto keys = parse_keys(keystr); - - for (auto& file : files) + try { - Buffer* buffer = create_buffer_from_file(file); - InputHandler input_handler{{ *buffer, Selection{} }}; + auto keys = parse_keys(keystr); - for (auto& key : keys) - input_handler.handle_key(key); + auto apply_keys_to_buffer = [&](Buffer& buffer) + { + try + { + InputHandler input_handler{{ buffer, Selection{} }}; - write_buffer_to_file(*buffer, file + ".kak-out"); + for (auto& key : keys) + input_handler.handle_key(key); + } + catch (Kakoune::runtime_error& err) + { + fprintf(stderr, "error while applying keys to buffer '%s': %s\n", + buffer.display_name().c_str(), err.what()); + } + }; - buffer_manager.delete_buffer(*buffer); + for (auto& file : files) + { + Buffer* buffer = create_buffer_from_file(file); + apply_keys_to_buffer(*buffer); + write_buffer_to_file(*buffer, file + ".kak-out"); + buffer_manager.delete_buffer(*buffer); + } + if (not isatty(0)) + { + Buffer* buffer = create_buffer_from_data(read_fd(0), "*stdin*", + Buffer::Flags::None); + apply_keys_to_buffer(*buffer); + write_buffer_to_fd(*buffer, 1); + buffer_manager.delete_buffer(*buffer); + } } - if (not isatty(0)) + catch (Kakoune::runtime_error& err) { - Buffer* buffer = create_buffer_from_data(read_fd(0), "*stdin*", Buffer::Flags::None); - InputHandler input_handler{{ *buffer, Selection{} }}; - - for (auto& key : keys) - input_handler.handle_key(key); - - write_buffer_to_fd(*buffer, 1); - - buffer_manager.delete_buffer(*buffer); + fprintf(stderr, "error: %s\n", err.what()); } buffer_manager.clear_buffer_trash(); |
