From 53a19afe521ec1d1866fa1b0e7b8daca8feb93fe Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Sat, 11 Mar 2017 13:08:32 -0500 Subject: [PATCH] Fix error when opening directory Fixes #587 --- cmd/micro/command.go | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/cmd/micro/command.go b/cmd/micro/command.go index 20b8734d..ef52fea9 100644 --- a/cmd/micro/command.go +++ b/cmd/micro/command.go @@ -300,6 +300,13 @@ func VSplit(args []string) { home, _ := homedir.Dir() filename = strings.Replace(filename, "~", home, 1) file, err := os.Open(filename) + fileInfo, _ := os.Stat(filename) + + if err == nil && fileInfo.IsDir() { + messenger.Error(filename, " is a directory") + return + } + defer file.Close() var buf *Buffer @@ -323,6 +330,13 @@ func HSplit(args []string) { home, _ := homedir.Dir() filename = strings.Replace(filename, "~", home, 1) file, err := os.Open(filename) + fileInfo, _ := os.Stat(filename) + + if err == nil && fileInfo.IsDir() { + messenger.Error(filename, " is a directory") + return + } + defer file.Close() var buf *Buffer @@ -356,10 +370,24 @@ func NewTab(args []string) { filename := args[0] home, _ := homedir.Dir() filename = strings.Replace(filename, "~", home, 1) - file, _ := os.Open(filename) + file, err := os.Open(filename) + fileInfo, _ := os.Stat(filename) + + if err == nil && fileInfo.IsDir() { + messenger.Error(filename, " is a directory") + return + } + defer file.Close() - tab := NewTabFromView(NewView(NewBuffer(file, filename))) + var buf *Buffer + if err != nil { + buf = NewBuffer(strings.NewReader(""), filename) + } else { + buf = NewBuffer(file, filename) + } + + tab := NewTabFromView(NewView(buf)) tab.SetNum(len(tabs)) tabs = append(tabs, tab) curTab = len(tabs) - 1