mirror of
https://github.com/EnumeratedDev/Typer.git
synced 2025-07-01 07:48:20 +00:00
Fix empty buffer being created when opening files using cmdline arguments and allow opening non-existent files
This commit is contained in:
parent
fa622762f2
commit
448ebe27cf
@ -80,7 +80,7 @@ func GetOpenFileBuffer(filename string) *Buffer {
|
||||
return nil
|
||||
}
|
||||
|
||||
func CreateFileBuffer(filename string) (*Buffer, error) {
|
||||
func CreateFileBuffer(filename string, openNonExistentFile bool) (*Buffer, error) {
|
||||
// Replace tilde with home directory
|
||||
if filename != "~" && strings.HasPrefix(filename, "~/") {
|
||||
homedir, err := os.UserHomeDir()
|
||||
@ -99,12 +99,14 @@ func CreateFileBuffer(filename string) (*Buffer, error) {
|
||||
}
|
||||
|
||||
stat, err := os.Stat(abs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if !openNonExistentFile {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !stat.Mode().IsRegular() {
|
||||
return nil, fmt.Errorf("%s is not a regular file", filename)
|
||||
if !stat.Mode().IsRegular() {
|
||||
return nil, fmt.Errorf("%s is not a regular file", filename)
|
||||
}
|
||||
}
|
||||
|
||||
buffer := Buffer{
|
||||
@ -115,9 +117,13 @@ func CreateFileBuffer(filename string) (*Buffer, error) {
|
||||
filename: abs,
|
||||
}
|
||||
|
||||
err = buffer.Load()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
// Load file contents if no error was encountered in stat call
|
||||
if err == nil {
|
||||
err = buffer.Load()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
Buffers[buffer.Id] = &buffer
|
||||
|
15
src/main.go
15
src/main.go
@ -11,26 +11,21 @@ func main() {
|
||||
log.Fatalf("Failed to create window: %v", err)
|
||||
}
|
||||
|
||||
var initialBuffer *Buffer = nil
|
||||
|
||||
if len(os.Args) > 0 {
|
||||
if len(os.Args) > 1 {
|
||||
for _, file := range os.Args[1:] {
|
||||
b, err := CreateFileBuffer(file)
|
||||
b, err := CreateFileBuffer(file, true)
|
||||
if err != nil {
|
||||
PrintMessage(window, "Could not open file: "+file)
|
||||
continue
|
||||
}
|
||||
|
||||
if initialBuffer == nil {
|
||||
initialBuffer = b
|
||||
if window.textArea.CurrentBuffer.Name == "New File 1" {
|
||||
delete(Buffers, window.textArea.CurrentBuffer.Id)
|
||||
window.textArea.CurrentBuffer = b
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if initialBuffer != nil {
|
||||
window.textArea.CurrentBuffer = initialBuffer
|
||||
}
|
||||
|
||||
for window.screen != nil {
|
||||
window.Draw()
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ func initTopMenu() {
|
||||
PrintMessage(window, fmt.Sprintf("File already open! Switching to buffer: %s", openBuffer.Name))
|
||||
window.textArea.CurrentBuffer = openBuffer
|
||||
} else {
|
||||
newBuffer, err := CreateFileBuffer(input)
|
||||
newBuffer, err := CreateFileBuffer(input, false)
|
||||
if err != nil {
|
||||
PrintMessage(window, fmt.Sprintf("Could not open file: %s", err.Error()))
|
||||
return
|
||||
|
@ -46,7 +46,9 @@ func CreateWindow() (*Window, error) {
|
||||
}
|
||||
|
||||
// Create empty buffer if nil
|
||||
window.textArea.CurrentBuffer = CreateBuffer("New File 1")
|
||||
if window.textArea.CurrentBuffer == nil {
|
||||
window.textArea.CurrentBuffer = CreateBuffer("New File 1")
|
||||
}
|
||||
|
||||
// Create tcell screen
|
||||
screen, err := tcell.NewScreen()
|
||||
|
Loading…
x
Reference in New Issue
Block a user