summaryrefslogtreecommitdiff
path: root/src/buffer_utils.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer_utils.cc')
-rw-r--r--src/buffer_utils.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/buffer_utils.cc b/src/buffer_utils.cc
index 045e4364..7220470b 100644
--- a/src/buffer_utils.cc
+++ b/src/buffer_utils.cc
@@ -47,24 +47,30 @@ ByteCount get_byte_to_column(const Buffer& buffer, CharCount tabstop, CharCoord
return (int)(it - line.begin());
}
-Buffer* create_file_buffer(StringView filename)
+Buffer* open_file_buffer(StringView filename)
{
- if (MappedFile file_data{filename})
- return new Buffer(filename.str(), Buffer::Flags::File,
- { file_data.data, (int)file_data.st.st_size },
- file_data.st.st_mtim);
- return nullptr;
+ MappedFile file_data{filename};
+ return new Buffer(filename.str(), Buffer::Flags::File,
+ file_data, file_data.st.st_mtim);
}
-bool reload_file_buffer(Buffer& buffer)
+Buffer* open_or_create_file_buffer(StringView filename)
{
- kak_assert(buffer.flags() & Buffer::Flags::File);
- if (MappedFile file_data{buffer.name()})
+ if (file_exists(filename))
{
- buffer.reload({ file_data.data, (int)file_data.st.st_size }, file_data.st.st_mtim);
- return true;
+ MappedFile file_data{filename};
+ return new Buffer(filename.str(), Buffer::Flags::File,
+ file_data, file_data.st.st_mtim);
}
- return false;
+ return new Buffer(filename.str(), Buffer::Flags::File | Buffer::Flags::New,
+ {}, InvalidTime);
+}
+
+void reload_file_buffer(Buffer& buffer)
+{
+ kak_assert(buffer.flags() & Buffer::Flags::File);
+ MappedFile file_data{buffer.name()};
+ buffer.reload(file_data, file_data.st.st_mtim);
}
Buffer* create_fifo_buffer(String name, int fd, bool scroll)