summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2024-04-19 17:04:41 +1000
committerMaxime Coste <mawww@kakoune.org>2024-04-27 16:31:40 +1000
commite8ad943532f2211dcbaeb2e75f71ef2f6516dd7f (patch)
treedf7eb732d0a7d489a264bf41f64b33edae45b15d /src
parentda1c302a37c00cdcc16da4c1f292ccbeecfd181b (diff)
Ensure re-used fifo buffers makes that buffer the latest opened
Diffstat (limited to 'src')
-rw-r--r--src/buffer_manager.cc7
-rw-r--r--src/buffer_manager.hh1
-rw-r--r--src/buffer_utils.cc1
3 files changed, 9 insertions, 0 deletions
diff --git a/src/buffer_manager.cc b/src/buffer_manager.cc
index 447b47c1..35f0fcde 100644
--- a/src/buffer_manager.cc
+++ b/src/buffer_manager.cc
@@ -149,4 +149,11 @@ void BufferManager::arrange_buffers(ConstArrayView<String> first_ones)
m_buffers = std::move(res);
}
+void BufferManager::make_latest(Buffer& buffer)
+{
+ auto it = find(m_buffers, &buffer);
+ kak_assert(it != m_buffers.end());
+ std::rotate(it, it+1, m_buffers.end());
+}
+
}
diff --git a/src/buffer_manager.hh b/src/buffer_manager.hh
index 78fb4c89..5b687a7f 100644
--- a/src/buffer_manager.hh
+++ b/src/buffer_manager.hh
@@ -31,6 +31,7 @@ public:
Buffer* get_buffer_matching_ifp(const Regex& regex);
Buffer& get_buffer_matching(const Regex& regex);
+ void make_latest(Buffer& buffer);
void arrange_buffers(ConstArrayView<String> first_ones);
Buffer& get_first_buffer();
diff --git a/src/buffer_utils.cc b/src/buffer_utils.cc
index 76910483..6a66b000 100644
--- a/src/buffer_utils.cc
+++ b/src/buffer_utils.cc
@@ -176,6 +176,7 @@ Buffer* create_fifo_buffer(String name, int fd, Buffer::Flags flags, bool scroll
buffer->flags() |= Buffer::Flags::NoUndo | flags;
buffer->values().clear();
buffer->reload({StringData::create("\n")}, ByteOrderMark::None, EolFormat::Lf, {InvalidTime, {}, {}});
+ buffer_manager.make_latest(*buffer);
}
else
buffer = buffer_manager.create_buffer(