summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2011-11-09 14:17:46 +0000
committerMaxime Coste <frrrwww@gmail.com>2011-11-09 14:17:46 +0000
commit5aeee719dd73010e2212dc19d601f57ff18b8da3 (patch)
tree44051eb7db91f6c425641bca1d552361d7b977af /src
parent55c092eed903679c05b8fb644eb2b26782a5cd02 (diff)
fix launching on new file
Diffstat (limited to 'src')
-rw-r--r--src/main.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/main.cc b/src/main.cc
index 5698130e..81442cd4 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -362,12 +362,8 @@ void do_go(Window& window, int count)
Window* current_window;
-void edit(const CommandParameters& params)
+Buffer* open_or_create(const std::string& filename)
{
- if (params.size() != 1)
- throw wrong_argument_count();
-
- std::string filename = params[0];
Buffer* buffer = NULL;
try
{
@@ -378,7 +374,16 @@ void edit(const CommandParameters& params)
print_status("new file " + filename);
buffer = new Buffer(filename, Buffer::Type::File);
}
- current_window = buffer->get_or_create_window();
+ return buffer;
+}
+
+void edit(const CommandParameters& params)
+{
+ if (params.size() != 1)
+ throw wrong_argument_count();
+
+ std::string filename = params[0];
+ current_window = open_or_create(filename)->get_or_create_window();
}
void write_buffer(const CommandParameters& params)
@@ -618,7 +623,7 @@ int main(int argc, char* argv[])
try
{
- auto buffer = (argc > 1) ? create_buffer_from_file(argv[1]) : new Buffer("*scratch*", Buffer::Type::Scratch);
+ auto buffer = (argc > 1) ? open_or_create(argv[1]) : new Buffer("*scratch*", Buffer::Type::Scratch);
current_window = buffer->get_or_create_window();
draw_window(*current_window);