Fix panic when attempting to open directory

This commit is contained in:
2026-05-19 18:24:03 +03:00
parent 01bc6702a9
commit ae8e702a77
3 changed files with 16 additions and 15 deletions
+8 -10
View File
@@ -604,7 +604,7 @@ func GetOpenFileBuffer(filename string) *Buffer {
return nil
}
func CreateFileBuffer(filename string, openNonExistentFile bool) (*Buffer, error) {
func CreateFileBuffer(filename string) (*Buffer, error) {
// Replace tilde with home directory
if filename != "~" && strings.HasPrefix(filename, "~/") {
homedir, err := os.UserHomeDir()
@@ -623,22 +623,20 @@ func CreateFileBuffer(filename string, openNonExistentFile bool) (*Buffer, error
}
stat, err := os.Stat(abs)
if !openNonExistentFile {
if err != nil {
if err != nil {
if !os.IsNotExist(err) {
return nil, err
}
if !stat.Mode().IsRegular() {
return nil, fmt.Errorf("%s is not a regular file", filename)
}
} else if !stat.Mode().IsRegular() {
return nil, fmt.Errorf("not a regular file")
}
if GetBufferByName(filename) != nil {
return nil, fmt.Errorf("a buffer with the name (%s) is already open", filename)
return nil, fmt.Errorf("a buffer with the same name is already open")
}
if GetBufferByFilename(abs) != nil {
return nil, fmt.Errorf("%s is already open in another buffer", filename)
return nil, fmt.Errorf("file is already open in another buffer")
}
buffer := Buffer{
@@ -675,7 +673,7 @@ func CreateBuffer(bufferName string) (*Buffer, error) {
}
if GetBufferByName(bufferName) != nil {
return nil, fmt.Errorf("a buffer with the name (%s) is already open", bufferName)
return nil, fmt.Errorf("a buffer with the same name is already open")
}
Buffers = append(Buffers, &buffer)
+2 -2
View File
@@ -141,9 +141,9 @@ func initCommands() {
window.PrintMessage(fmt.Sprintf("File already open! Switching to buffer: %s", openBuffer.Name), TYPER_MESSAGE_INFO)
window.CurrentBuffer = openBuffer
} else {
newBuffer, err := CreateFileBuffer(input, false)
newBuffer, err := CreateFileBuffer(input)
if err != nil {
window.PrintMessage(fmt.Sprintf("Could not open file: %s", err.Error()), TYPER_MESSAGE_WARNING)
window.PrintMessage(fmt.Sprintf("Could not open file %s: %s", input, err), TYPER_MESSAGE_ERROR)
return
}
+6 -3
View File
@@ -1,6 +1,7 @@
package main
import (
"fmt"
"log"
flag "github.com/spf13/pflag"
@@ -45,9 +46,9 @@ func main() {
// Open paths passed as arguments
if flag.NArg() > 0 {
for _, file := range flag.Args() {
buffer, err := CreateFileBuffer(file, true)
buffer, err := CreateFileBuffer(file)
if err != nil {
window.PrintMessage("Could not open file: "+file, TYPER_MESSAGE_ERROR)
window.PrintMessage(fmt.Sprintf("Could not open file %s: %s", file, err), TYPER_MESSAGE_ERROR)
continue
}
@@ -55,7 +56,9 @@ func main() {
window.CurrentBuffer = buffer
}
}
} else {
}
if window.CurrentBuffer == nil {
buffer, err := CreateBuffer("New Buffer 1")
if err == nil {
window.CurrentBuffer = buffer