diff options
| author | Maxime Coste <mawww@kakoune.org> | 2018-02-18 14:48:24 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2018-02-18 14:48:24 +1100 |
| commit | 10c6c59a26f2c2ffec81aeadeac079aeac0e32cf (patch) | |
| tree | 42166d0e7077417c6b7891ac8ef120e164dde2a8 /src | |
| parent | 82c8a6e9dd7aab04463b8795f5bc53591d374891 (diff) | |
Buffer: avoid expensive option flattening in on_registred with NoHooks
Diffstat (limited to 'src')
| -rw-r--r-- | src/buffer.cc | 6 | ||||
| -rw-r--r-- | src/main.cc | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/buffer.cc b/src/buffer.cc index 22f4a794..2de29b97 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -107,6 +107,12 @@ void Buffer::on_registered() options().register_watcher(*this); + if (m_flags & Buffer::Flags::NoHooks) + { + on_option_changed(options()["readonly"]); + return; + } + run_hook_in_own_context("BufCreate", m_name); if (m_flags & Flags::File) diff --git a/src/main.cc b/src/main.cc index 555f5eba..088f9c0f 100644 --- a/src/main.cc +++ b/src/main.cc @@ -772,7 +772,7 @@ int run_filter(StringView keystr, StringView commands, ConstArrayView<StringView for (auto& file : files) { - Buffer* buffer = open_file_buffer(file); + Buffer* buffer = open_file_buffer(file, Buffer::Flags::NoHooks); if (not suffix_backup.empty()) write_buffer_to_file(*buffer, buffer->name() + suffix_backup); apply_to_buffer(*buffer); @@ -782,7 +782,7 @@ int run_filter(StringView keystr, StringView commands, ConstArrayView<StringView if (not isatty(0)) { Buffer& buffer = *buffer_manager.create_buffer( - "*stdin*", Buffer::Flags::None, read_fd(0), InvalidTime); + "*stdin*", Buffer::Flags::NoHooks, read_fd(0), InvalidTime); apply_to_buffer(buffer); write_buffer_to_fd(buffer, 1); buffer_manager.delete_buffer(buffer); |
