summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2012-01-31 14:01:48 +0000
committerMaxime Coste <frrrwww@gmail.com>2012-01-31 14:01:48 +0000
commit830d96f7a161e536469c4158bddcb771c13af607 (patch)
treec34e9077452cfeb71c240117ce12d848ad3e6795 /src
parent959ec46a167203e69f2f1bad1569034206f02420 (diff)
Buffer: add NewFile buffer type for buffer with an non existing yet file
Diffstat (limited to 'src')
-rw-r--r--src/buffer.cc6
-rw-r--r--src/buffer.hh1
-rw-r--r--src/main.cc4
3 files changed, 8 insertions, 3 deletions
diff --git a/src/buffer.cc b/src/buffer.cc
index 4f792e38..d5cb762c 100644
--- a/src/buffer.cc
+++ b/src/buffer.cc
@@ -28,7 +28,11 @@ Buffer::Buffer(const std::string& name, Type type,
{
BufferManager::instance().register_buffer(this);
- GlobalHooksManager::instance().run_hook("BufCreate", name, Context(*this));
+ if (type == Type::NewFile)
+ GlobalHooksManager::instance().run_hook("BufCreate", name, Context(*this));
+ else if (type == Type::File)
+ GlobalHooksManager::instance().run_hook("BufOpen", name, Context(*this));
+
compute_lines();
}
diff --git a/src/buffer.hh b/src/buffer.hh
index 3cedffd3..7b010c9b 100644
--- a/src/buffer.hh
+++ b/src/buffer.hh
@@ -111,6 +111,7 @@ public:
enum class Type
{
File,
+ NewFile,
Scratch
};
diff --git a/src/main.cc b/src/main.cc
index d0164737..d1a0ae85 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -515,7 +515,7 @@ Buffer* open_or_create(const std::string& filename)
catch (file_not_found& what)
{
print_status("new file " + filename);
- buffer = new Buffer(filename, Buffer::Type::File);
+ buffer = new Buffer(filename, Buffer::Type::NewFile);
}
return buffer;
}
@@ -554,7 +554,7 @@ void quit(const CommandParameters& params, const Context& context)
{
for (auto& buffer : BufferManager::instance())
{
- if (buffer.type() == Buffer::Type::File and buffer.is_modified())
+ if (buffer.type() != Buffer::Type::Scratch and buffer.is_modified())
{
print_status("modified buffer remaining");
return;